1e41f4b71Sopenharmony_ci# \<image> Development 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ciThe **\<image>** component is used to render and display images. For details, see [image](../reference/apis-arkui/arkui-js/js-components-basic-image.md). 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci 6e41f4b71Sopenharmony_ci## Creating an \<image> Component 7e41f4b71Sopenharmony_ci 8e41f4b71Sopenharmony_ciCreate an **\<image>** component in the .hml file under **pages/index**. 9e41f4b71Sopenharmony_ci```html 10e41f4b71Sopenharmony_ci<!-- index.hml --> 11e41f4b71Sopenharmony_ci<div class="container"> 12e41f4b71Sopenharmony_ci <image style="height: 30%;" src="common/images/bg-tv.jpg"> </image> 13e41f4b71Sopenharmony_ci</div> 14e41f4b71Sopenharmony_ci``` 15e41f4b71Sopenharmony_ci 16e41f4b71Sopenharmony_ci```css 17e41f4b71Sopenharmony_ci/* xxx.css */ 18e41f4b71Sopenharmony_ci.container { 19e41f4b71Sopenharmony_ci width: 100%; 20e41f4b71Sopenharmony_ci height: 100%; 21e41f4b71Sopenharmony_ci flex-direction: column; 22e41f4b71Sopenharmony_ci justify-content: center; 23e41f4b71Sopenharmony_ci align-items: center; 24e41f4b71Sopenharmony_ci background-color: #F1F3F5; 25e41f4b71Sopenharmony_ci} 26e41f4b71Sopenharmony_ci``` 27e41f4b71Sopenharmony_ci 28e41f4b71Sopenharmony_ci 29e41f4b71Sopenharmony_ci 30e41f4b71Sopenharmony_ci 31e41f4b71Sopenharmony_ci## Setting the Image Style 32e41f4b71Sopenharmony_ci 33e41f4b71Sopenharmony_ciSet the **width**, **height**, and **object-fit** attributes to define the width, height, and scale type of the image. 34e41f4b71Sopenharmony_ci 35e41f4b71Sopenharmony_ci 36e41f4b71Sopenharmony_ci```html 37e41f4b71Sopenharmony_ci<!-- index.hml --> 38e41f4b71Sopenharmony_ci<div class="container"> 39e41f4b71Sopenharmony_ci <image src="common/images/bg-tv.jpg"> </image> 40e41f4b71Sopenharmony_ci</div> 41e41f4b71Sopenharmony_ci``` 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci 44e41f4b71Sopenharmony_ci```css 45e41f4b71Sopenharmony_ci/* xxx.css */ 46e41f4b71Sopenharmony_ci.container { 47e41f4b71Sopenharmony_ci width: 100%; 48e41f4b71Sopenharmony_ci height: 100%; 49e41f4b71Sopenharmony_ci flex-direction: column; 50e41f4b71Sopenharmony_ci align-items: center; 51e41f4b71Sopenharmony_ci justify-content: center; 52e41f4b71Sopenharmony_ci background-color:#F1F3F5; 53e41f4b71Sopenharmony_ci} 54e41f4b71Sopenharmony_ciimage{ 55e41f4b71Sopenharmony_ci width: 80%; 56e41f4b71Sopenharmony_ci height: 500px; 57e41f4b71Sopenharmony_ci border: 5px solid saddlebrown; 58e41f4b71Sopenharmony_ci border-radius: 20px; 59e41f4b71Sopenharmony_ci object-fit: contain; 60e41f4b71Sopenharmony_ci match-text-direction:true; 61e41f4b71Sopenharmony_ci} 62e41f4b71Sopenharmony_ci``` 63e41f4b71Sopenharmony_ci 64e41f4b71Sopenharmony_ci 65e41f4b71Sopenharmony_ci 66e41f4b71Sopenharmony_ci 67e41f4b71Sopenharmony_ci 68e41f4b71Sopenharmony_ci## Loading the Image 69e41f4b71Sopenharmony_ci 70e41f4b71Sopenharmony_ciWhen the image is successfully loaded, the **complete** event is triggered, and the loaded image is returned. If an exception occurs during image loading, the **error** event is triggered, and the image loading failure log is printed. 71e41f4b71Sopenharmony_ci 72e41f4b71Sopenharmony_ci```html 73e41f4b71Sopenharmony_ci<!-- index.hml --> 74e41f4b71Sopenharmony_ci<div class="container" > 75e41f4b71Sopenharmony_ci <div> 76e41f4b71Sopenharmony_ci <image src="common/images/bg-tv.jpg" oncomplete="imageComplete(1)" onerror="imageError(1)"> </image> 77e41f4b71Sopenharmony_ci </div> 78e41f4b71Sopenharmony_ci <div> 79e41f4b71Sopenharmony_ci <image src="common/images/bg-tv1.jpg" oncomplete="imageComplete(2)" onerror="imageError(2)"> </image> 80e41f4b71Sopenharmony_ci </div> 81e41f4b71Sopenharmony_ci</div> 82e41f4b71Sopenharmony_ci``` 83e41f4b71Sopenharmony_ci 84e41f4b71Sopenharmony_ci```css 85e41f4b71Sopenharmony_ci/* xxx.css */ 86e41f4b71Sopenharmony_ci.container{ 87e41f4b71Sopenharmony_ci width: 100%; 88e41f4b71Sopenharmony_ci height: 100%; 89e41f4b71Sopenharmony_ci flex-direction: column; 90e41f4b71Sopenharmony_ci justify-content: center; 91e41f4b71Sopenharmony_ci align-self: center; 92e41f4b71Sopenharmony_ci background-color: #F1F3F5; 93e41f4b71Sopenharmony_ci} 94e41f4b71Sopenharmony_ci.container div{ 95e41f4b71Sopenharmony_ci margin-left: 10%; 96e41f4b71Sopenharmony_ci width: 80%; 97e41f4b71Sopenharmony_ci height: 300px; 98e41f4b71Sopenharmony_ci margin-bottom: 40px; 99e41f4b71Sopenharmony_ci} 100e41f4b71Sopenharmony_ci``` 101e41f4b71Sopenharmony_ci 102e41f4b71Sopenharmony_ci```js 103e41f4b71Sopenharmony_ci// index.js 104e41f4b71Sopenharmony_ciimport promptAction from '@ohos.promptAction'; 105e41f4b71Sopenharmony_ciexport default { 106e41f4b71Sopenharmony_ci imageComplete(i,e){ 107e41f4b71Sopenharmony_ci promptAction.showToast({ 108e41f4b71Sopenharmony_ci message: "image "+i+"'s width"+ e.width+"----image "+i+"'s height"+e.height, 109e41f4b71Sopenharmony_ci duration: 3000, 110e41f4b71Sopenharmony_ci }) 111e41f4b71Sopenharmony_ci }, 112e41f4b71Sopenharmony_ci imageError(i,e){ 113e41f4b71Sopenharmony_ci setTimeout(()=>{ 114e41f4b71Sopenharmony_ci promptAction.showToast({ 115e41f4b71Sopenharmony_ci message: "Failed to load image "+i+".", 116e41f4b71Sopenharmony_ci duration: 3000, 117e41f4b71Sopenharmony_ci }) 118e41f4b71Sopenharmony_ci },3000) 119e41f4b71Sopenharmony_ci } 120e41f4b71Sopenharmony_ci} 121e41f4b71Sopenharmony_ci``` 122e41f4b71Sopenharmony_ci 123e41f4b71Sopenharmony_ci 124e41f4b71Sopenharmony_ci 125e41f4b71Sopenharmony_ci 126e41f4b71Sopenharmony_ci 127e41f4b71Sopenharmony_ci## Example Scenario 128e41f4b71Sopenharmony_ci 129e41f4b71Sopenharmony_ciIn this example you touch and hold an image to gradually hide it. After the image is completely hidden, it will show in its original setting. Set a **setInterval** timer to change the image opacity at a specified interval so that it is hidden gradually. When the opacity changes to **0**, the timer is cleared and the opacity is set to **1**. 130e41f4b71Sopenharmony_ci```html 131e41f4b71Sopenharmony_ci<!-- index.hml --> 132e41f4b71Sopenharmony_ci<div class="page-container"> 133e41f4b71Sopenharmony_ci <div class="content"> 134e41f4b71Sopenharmony_ci <div class="image-container"> 135e41f4b71Sopenharmony_ci <image class="testimage" src="{{testuri}}" style="opacity:{{imageopacity}};" onlongpress="changeopacity"> </image> 136e41f4b71Sopenharmony_ci </div> 137e41f4b71Sopenharmony_ci <div class="text-container"> 138e41f4b71Sopenharmony_ci <text style="font-size: 37px;font-weight:bold;color:orange;text-align: center;width: 100%;">Touch and hold the image</text> 139e41f4b71Sopenharmony_ci </div> 140e41f4b71Sopenharmony_ci </div> 141e41f4b71Sopenharmony_ci</div> 142e41f4b71Sopenharmony_ci``` 143e41f4b71Sopenharmony_ci 144e41f4b71Sopenharmony_ci```css 145e41f4b71Sopenharmony_ci/* xxx.css */ 146e41f4b71Sopenharmony_ci.page-container { 147e41f4b71Sopenharmony_ci width: 100%; 148e41f4b71Sopenharmony_ci height: 100%; 149e41f4b71Sopenharmony_ci flex-direction:column; 150e41f4b71Sopenharmony_ci align-self: center; 151e41f4b71Sopenharmony_ci justify-content: center; 152e41f4b71Sopenharmony_ci background-color:#F1F3F5; 153e41f4b71Sopenharmony_ci background-color: #F1F3F5; 154e41f4b71Sopenharmony_ci} 155e41f4b71Sopenharmony_ci.content{ 156e41f4b71Sopenharmony_ci flex-direction:column; 157e41f4b71Sopenharmony_ci} 158e41f4b71Sopenharmony_ci.image-container { 159e41f4b71Sopenharmony_ci width: 100%; 160e41f4b71Sopenharmony_ci height: 300px; 161e41f4b71Sopenharmony_ci align-items: center; 162e41f4b71Sopenharmony_ci justify-content: center; 163e41f4b71Sopenharmony_ci} 164e41f4b71Sopenharmony_ci.text-container { 165e41f4b71Sopenharmony_ci margin-top:50px; 166e41f4b71Sopenharmony_ci width: 100%; 167e41f4b71Sopenharmony_ci height: 60px; 168e41f4b71Sopenharmony_ci flex-direction: row; 169e41f4b71Sopenharmony_ci justify-content: space-between; 170e41f4b71Sopenharmony_ci} 171e41f4b71Sopenharmony_ci.testimage { 172e41f4b71Sopenharmony_ci width: 100%; height: 400px; 173e41f4b71Sopenharmony_ci object-fit: scale-down; 174e41f4b71Sopenharmony_ci border-radius: 20px; 175e41f4b71Sopenharmony_ci} 176e41f4b71Sopenharmony_ci``` 177e41f4b71Sopenharmony_ci 178e41f4b71Sopenharmony_ci```js 179e41f4b71Sopenharmony_ci// index.js 180e41f4b71Sopenharmony_ciimport promptAction from '@ohos.promptAction'; 181e41f4b71Sopenharmony_ciexport default { 182e41f4b71Sopenharmony_ci data: { 183e41f4b71Sopenharmony_ci testuri: 'common/images/bg-tv.jpg', 184e41f4b71Sopenharmony_ci imageopacity:1, 185e41f4b71Sopenharmony_ci timer: null 186e41f4b71Sopenharmony_ci }, 187e41f4b71Sopenharmony_ci changeopacity: function () { 188e41f4b71Sopenharmony_ci promptAction.showToast({ 189e41f4b71Sopenharmony_ci message: 'Touch and hold the image.' 190e41f4b71Sopenharmony_ci }) 191e41f4b71Sopenharmony_ci var opval = this.imageopacity * 20 192e41f4b71Sopenharmony_ci clearInterval(this.timer); 193e41f4b71Sopenharmony_ci this.timer = setInterval(()=>{ 194e41f4b71Sopenharmony_ci opval--; 195e41f4b71Sopenharmony_ci this.imageopacity = opval / 20 196e41f4b71Sopenharmony_ci if (opval===0) { 197e41f4b71Sopenharmony_ci clearInterval(this.timer) 198e41f4b71Sopenharmony_ci this.imageopacity = 1 199e41f4b71Sopenharmony_ci } 200e41f4b71Sopenharmony_ci },100); 201e41f4b71Sopenharmony_ci } 202e41f4b71Sopenharmony_ci} 203e41f4b71Sopenharmony_ci``` 204e41f4b71Sopenharmony_ci 205e41f4b71Sopenharmony_ci 206