W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Image為圖片組件,常用于在應(yīng)用中顯示圖片。Image支持加載string、PixelMap和Resource類型的數(shù)據(jù)源,支持png、jpg、bmp、svg和gif類型的圖片格式。
該組件從API Version 7開(kāi)始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標(biāo)單獨(dú)標(biāo)記該內(nèi)容的起始版本。
使用網(wǎng)絡(luò)圖片時(shí),需要申請(qǐng)權(quán)限ohos.permission.INTERNET。具體申請(qǐng)方式請(qǐng)參考權(quán)限申請(qǐng)聲明。
Image(src: string | PixelMap | Resource)
通過(guò)圖片數(shù)據(jù)源獲取圖片,用于后續(xù)渲染展示。
Image組件加載圖片失敗或圖片尺寸為0時(shí),圖片組件大小自動(dòng)為0,不跟隨父組件的布局約束。
從API version 9開(kāi)始,該接口支持在ArkTS卡片中使用。
參數(shù):
參數(shù)名 | 參數(shù)類型 | 必填 | 參數(shù)描述 |
---|---|---|---|
src | 是 | 圖片的數(shù)據(jù)源,支持本地圖片和網(wǎng)絡(luò)圖片,引用方式請(qǐng)參考加載圖片資源。
說(shuō)明:
|
屬性的詳細(xì)使用指導(dǎo)請(qǐng)參考添加屬性。除支持通用屬性外,還支持以下屬性:
名稱 | 參數(shù)類型 | 描述 |
---|---|---|
alt | string | Resource | 加載時(shí)顯示的占位圖,支持本地圖片(png、jpg、bmp、svg和gif類型),不支持網(wǎng)絡(luò)圖片。 默認(rèn)值:null 從API version 9開(kāi)始,該接口支持在ArkTS卡片中使用。 |
objectFit | 設(shè)置圖片的填充效果。 默認(rèn)值:ImageFit.Cover 從API version 9開(kāi)始,該接口支持在ArkTS卡片中使用。 | |
objectRepeat | 設(shè)置圖片的重復(fù)樣式。從中心點(diǎn)向兩邊重復(fù),剩余空間不足放下一張圖片時(shí)會(huì)截?cái)唷?/p> 默認(rèn)值:ImageRepeat.NoRepeat 從API version 9開(kāi)始,該接口支持在ArkTS卡片中使用。 說(shuō)明: svg類型圖源不支持該屬性。 | |
interpolation | 設(shè)置圖片的插值效果,即減輕低清晰度圖片在放大顯示時(shí)出現(xiàn)的鋸齒問(wèn)題。 默認(rèn)值:ImageInterpolation.None 從API version 9開(kāi)始,該接口支持在ArkTS卡片中使用。 說(shuō)明: svg類型圖源不支持該屬性。 PixelMap資源不支持該屬性。 | |
renderMode | 設(shè)置圖片的渲染模式為原色或黑白。 默認(rèn)值:ImageRenderMode.Original 從API version 9開(kāi)始,該接口支持在ArkTS卡片中使用。 說(shuō)明: svg類型圖源不支持該屬性。 | |
sourceSize | { width: number, height: number } | 設(shè)置圖片解碼尺寸,降低圖片的分辨率,常用于需要讓圖片顯示尺寸比組件尺寸更小的場(chǎng)景。和ImageFit.None配合使用時(shí)可在組件內(nèi)顯示小圖。 單位:px 從API version 9開(kāi)始,該接口支持在ArkTS卡片中使用。 說(shuō)明: 僅在目標(biāo)尺寸小于圖源尺寸時(shí)生效。 svg類型圖源不支持該屬性。 PixelMap資源不支持該屬性。 |
matchTextDirection | boolean | 設(shè)置圖片是否跟隨系統(tǒng)語(yǔ)言方向,在RTL語(yǔ)言環(huán)境下顯示鏡像翻轉(zhuǎn)顯示效果。 默認(rèn)值:false 從API version 9開(kāi)始,該接口支持在ArkTS卡片中使用。 |
fitOriginalSize | boolean | 圖片組件尺寸未設(shè)置時(shí),顯示尺寸是否跟隨圖源尺寸。 組件不設(shè)置寬高或僅設(shè)置寬/高時(shí),該屬性不生效。 默認(rèn)值:false 從API version 9開(kāi)始,該接口支持在ArkTS卡片中使用。 |
fillColor | 設(shè)置填充顏色,設(shè)置后填充顏色會(huì)覆蓋在圖片上。 從API version 9開(kāi)始,該接口支持在ArkTS卡片中使用。 說(shuō)明: 僅對(duì)svg圖源生效,設(shè)置后會(huì)替換svg圖片的填充顏色。 | |
autoResize | boolean | 設(shè)置圖片解碼過(guò)程中是否對(duì)圖源自動(dòng)縮放。設(shè)置為true時(shí),組件會(huì)根據(jù)顯示區(qū)域的尺寸決定用于繪制的圖源尺寸,有利于減少內(nèi)存占用。如原圖大小為1920x1080,而顯示區(qū)域大小為200x200,則圖片會(huì)自動(dòng)解碼到200x200的尺寸,大幅度節(jié)省圖片占用的內(nèi)存。 默認(rèn)值:true 從API version 9開(kāi)始,該接口支持在ArkTS卡片中使用。 |
syncLoad8+ | boolean | 設(shè)置是否同步加載圖片,默認(rèn)是異步加載。同步加載時(shí)阻塞UI線程,不會(huì)顯示占位圖。 默認(rèn)值:false 從API version 9開(kāi)始,該接口支持在ArkTS卡片中使用。 說(shuō)明: 建議加載尺寸較小的本地圖片時(shí)將syncLoad設(shè)為true,因?yàn)楹臅r(shí)較短,在主線程上執(zhí)行即可。 |
copyOption9+ | 設(shè)置圖片是否可復(fù)制。 當(dāng)copyOption設(shè)置為非CopyOptions.None時(shí),支持使用長(zhǎng)按、鼠標(biāo)右擊、快捷組合鍵'CTRL+C'等方式進(jìn)行復(fù)制。 默認(rèn)值:CopyOptions.None 從API version 9開(kāi)始,該接口支持在ArkTS卡片中使用。 說(shuō)明: svg圖片不支持復(fù)制。 | |
colorFilter9+ | 給圖像設(shè)置顏色濾鏡效果,入?yún)橐粋€(gè)的4x5的RGBA轉(zhuǎn)換矩陣。 矩陣第一行表示R(紅色)的向量值,第二行表示G(綠色)的向量值,第三行表示B(藍(lán)色)的向量值,第四行表示A(透明度)的向量值,4行分別代表不同的RGBA的向量值。 RGBA值分別是0和1之間的浮點(diǎn)數(shù)字,當(dāng)矩陣對(duì)角線值為1時(shí),保持圖片原有色彩。 計(jì)算規(guī)則: 如果輸入的濾鏡矩陣為:
像素點(diǎn)為[R, G, B, A] 則過(guò)濾后的顏色為 [R’, G’, B’, A’]
從API version 9開(kāi)始,該接口支持在ArkTS卡片中使用。 | |
draggable9+ | boolean | 設(shè)置組件默認(rèn)拖拽效果,設(shè)置為true時(shí),組件可拖拽。 不能和拖拽事件事件同時(shí)使用。 默認(rèn)值:false |
從API version 9開(kāi)始,該接口支持在ArkTS卡片中使用。
名稱 | 描述 |
---|---|
None | 不使用圖片插值。 |
High | 高圖片插值,插值質(zhì)量最高,可能會(huì)影響圖片渲染的速度。 |
Medium | 中圖片插值。 |
Low | 低圖片插值。 |
onComplete(callback: (event?: { width: number, height: number, componentWidth: number, componentHeight: number, loadingStatus: number }) => void)
圖片數(shù)據(jù)加載成功和解碼成功時(shí)均觸發(fā)該回調(diào),返回成功加載的圖片尺寸。
從API version 9開(kāi)始,該接口支持在ArkTS卡片中使用。
參數(shù):
參數(shù)名 | 類型 | 說(shuō)明 |
---|---|---|
width | number | 圖片的寬。 單位:像素 |
height | number | 圖片的高。 單位:像素 |
componentWidth | number | 組件的寬。 單位:像素 |
componentHeight | number | 組件的高。 單位:像素 |
loadingStatus | number | 圖片加載成功的狀態(tài)值。 說(shuō)明: 返回的狀態(tài)值為0時(shí),表示圖片數(shù)據(jù)加載成功。返回的狀態(tài)值為1時(shí),表示圖片解碼成功。 |
onError(callback: (event?: { componentWidth: number, componentHeight: number , message: string }) => void)
圖片加載異常時(shí)觸發(fā)該回調(diào)。
從API version 9開(kāi)始,該接口支持在ArkTS卡片中使用。
參數(shù):
參數(shù)名 | 類型 | 說(shuō)明 |
---|---|---|
componentWidth | number | 組件的寬。 單位:像素 |
componentHeight | number | 組件的高。 單位:像素 |
message9+ | string | 報(bào)錯(cuò)信息。 |
onFinish(event: () => void)
當(dāng)加載的源文件為帶動(dòng)效的svg格式圖片時(shí),svg動(dòng)效播放完成時(shí)會(huì)觸發(fā)這個(gè)回調(diào)。如果動(dòng)效為無(wú)限循環(huán)動(dòng)效,則不會(huì)觸發(fā)這個(gè)回調(diào)。
僅支持svg格式的圖片。
從API version 9開(kāi)始,該接口支持在ArkTS卡片中使用。
- @Entry
- @Component
- struct ImageExample1 {
- build() {
- Column() {
- Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Start }) {
- Row() {
- // 加載png格式圖片
- Image($r('app.media.ic_camera_master_ai_leaf'))
- .width(110).height(110).margin(15)
- .overlay('png', { align: Alignment.Bottom, offset: { x: 0, y: 20 } })
- // 加載gif格式圖片
- Image($r('app.media.loading'))
- .width(110).height(110).margin(15)
- .overlay('gif', { align: Alignment.Bottom, offset: { x: 0, y: 20 } })
- }
- Row() {
- // 加載svg格式圖片
- Image($r('app.media.ic_camera_master_ai_clouded'))
- .width(110).height(110).margin(15)
- .overlay('svg', { align: Alignment.Bottom, offset: { x: 0, y: 20 } })
- // 加載jpg格式圖片
- Image($r('app.media.ic_public_favor_filled'))
- .width(110).height(110).margin(15)
- .overlay('jpg', { align: Alignment.Bottom, offset: { x: 0, y: 20 } })
- }
- }
- }.height(320).width(360).padding({ right: 10, top: 10 })
- }
- }
加載網(wǎng)絡(luò)圖片時(shí),默認(rèn)網(wǎng)絡(luò)超時(shí)是5分鐘,建議使用alt配置加載時(shí)的占位圖。如果需要更靈活的網(wǎng)絡(luò)配置,可以使用SDK中提供的HTTP工具包發(fā)送網(wǎng)絡(luò)請(qǐng)求,接著將返回的數(shù)據(jù)解碼為Image組件中的PixelMap,圖片開(kāi)發(fā)可參考圖片處理。
使用網(wǎng)絡(luò)圖片時(shí),需要申請(qǐng)權(quán)限ohos.permission.INTERNET。具體申請(qǐng)方式請(qǐng)參考權(quán)限申請(qǐng)聲明。
- @Entry
- @Component
- struct ImageExample2 {
- build() {
- Column({ space: 10 }) {
- Image("https://www.example.com/xxx.png")// 直接加載網(wǎng)絡(luò)地址,請(qǐng)?zhí)顚懸粋€(gè)具體的網(wǎng)絡(luò)圖片地址
- .alt($r('app.media.icon'))// 使用alt,在網(wǎng)絡(luò)圖片加載成功前使用占位圖
- .width(100)
- .height(100)
- }
- }
- }
- @Entry
- @Component
- struct ImageExample3 {
- @State widthValue: number = 0;
- @State heightValue: number = 0;
- private on: Resource = $r('app.media.image_on');
- private off: Resource = $r('app.media.image_off');
- private on2off: Resource = $r('app.media.image_on2off');
- private off2on: Resource = $r('app.media.image_off2on');
- @State src: Resource = this.on;
- build() {
- Column() {
- Row({ space: 20 }) {
- Column() {
- Image($r('app.media.img_example1'))
- .alt($r('app.media.ic_public_picture'))
- .sourceSize({
- width: 900,
- height: 900
- })
- .objectFit(ImageFit.Cover)
- .height(180).width(180)
- // 圖片加載完成后,獲取圖片尺寸。
- .onComplete((msg: { width: number,height: number }) => {
- this.widthValue = msg.width
- this.heightValue = msg.height
- })
- .onError(() => {
- console.log('load image fail')
- })
- .overlay('\nwidth: ' + String(this.widthValue) + ' height: ' + String(this.heightValue), {
- align: Alignment.Bottom,
- offset: { x: 0, y: 20 }
- })
- }
- // 為圖片添加點(diǎn)擊事件,點(diǎn)擊完成后加載特定圖片
- Image(this.src)
- .width(120).height(120)
- .onClick(() => {
- if (this.src == this.on || this.src == this.off2on) {
- this.src = this.on2off
- } else {
- this.src = this.off2on
- }
- })
- .onFinish(() => {
- if (this.src == this.off2on) {
- this.src = this.on
- } else {
- this.src = this.off
- }
- })
- }
- }.width('100%')
- }
- }
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: