HEIF:更高質(zhì)量、更小體積,開啟HarmonyOS圖像新體驗(yàn)

0 評(píng)論 672 瀏覽 0 收藏 9 分鐘

一、圖像發(fā)展大趨勢及HarmonyOS圖像格式支持策略

自數(shù)字圖像誕生以來,圖像格式經(jīng)歷了多輪更新迭代。從早期的BMP、TIFF等無壓縮或輕壓縮格式,到后來廣泛應(yīng)用的JPEG、PNG、GIF等主流格式,圖像編碼技術(shù)不斷演進(jìn),其核心目標(biāo)始終是——在有限的存儲(chǔ)空間與帶寬條件下,實(shí)現(xiàn)更高質(zhì)量、更高效率的圖像呈現(xiàn)。

在 PC 時(shí)代,JPEG 和 PNG 分別作為有損壓縮與無損壓縮的代表,幾乎覆蓋了絕大多數(shù)圖像使用場景。但隨著數(shù)字圖像設(shè)備的普及和互聯(lián)網(wǎng)的飛速發(fā)展,傳統(tǒng)圖像格式的局限性日益凸顯,催生出新一代圖像格式的需求。

現(xiàn)代圖像數(shù)據(jù)呈現(xiàn)出兩大顯著趨勢:

  • 圖像質(zhì)量持續(xù)提高
  • 分辨率穩(wěn)步提升。
  • 色深逐漸增加。
  • 色域持續(xù)拓展。
  • 動(dòng)態(tài)范圍逐步升級(jí)。

  • 圖像數(shù)量爆炸性增長
  • 社交媒體、即時(shí)通訊、在線購物等應(yīng)用推動(dòng)個(gè)人日均拍攝圖像數(shù)大幅提升。
  • 圖像成為 AI、視覺識(shí)別等領(lǐng)域的重要數(shù)據(jù)源。

在當(dāng)今時(shí)代,人人皆為“影像內(nèi)容生產(chǎn)者”,海量的照片與視頻對(duì)圖像的存儲(chǔ)、傳輸和展示提出了更高的要求。HarmonyOS從系統(tǒng)層面持續(xù)強(qiáng)化圖像處理能力,優(yōu)先支持主流圖像格式,并對(duì)實(shí)際應(yīng)用中具備顯著優(yōu)勢的格式著重進(jìn)行優(yōu)化。

目前,HarmonyOS已支持GIF、JPEG、PNG、WebP、HEIF、BMP等主流圖像格式的解碼與顯示,支持將圖像編碼為JPEG、PNG、HEIF、WebP、GIF等格式。對(duì)TIFF格式和RAW格式預(yù)覽圖的解碼支持即將上線。更多格式的支持也正在規(guī)劃推進(jìn)中。

二、HEIF的優(yōu)勢及HarmonyOS對(duì)HEIF的優(yōu)化

HEIF(High Efficiency Image File Format)作為新一代高效圖像格式,憑借優(yōu)異的壓縮性能和豐富的編碼特性,為數(shù)字影像帶來了全新的體驗(yàn)。此外,自發(fā)布以來的近十年實(shí)踐中,HEIF已充分證明其穩(wěn)定性與成熟度,逐步取代傳統(tǒng)格式成為未來圖像技術(shù)的重要選擇。

HEIF基于HEVC(H.265)視頻壓縮標(biāo)準(zhǔn),具備顯著的技術(shù)優(yōu)勢:

  • 更高壓縮效率:在相同畫質(zhì)下,相比于JPEG、WEBP等傳統(tǒng)格式,可節(jié)省50%以上的存儲(chǔ)空間。
  • 支持HDR和高色深:天然支持10bit色深、HDR顯示,更適配現(xiàn)代高性能顯示設(shè)備
  • 可擴(kuò)展性強(qiáng):支持存儲(chǔ)增益圖Gain Map、深度圖Depth Map等輔助圖像,適用于HDR、景深重建等高級(jí)圖像處理場景。

自HarmonyOS?5.0起,對(duì)HEIF圖像的支持已實(shí)現(xiàn)全面升級(jí)。系統(tǒng)底層架構(gòu)進(jìn)行了優(yōu)化,結(jié)合軟硬協(xié)同的解碼方案,大幅提升了解碼效率與運(yùn)行性能。HarmonyOS?5.x相比于HarmonyOS?4.x,HEIF解碼性能提升60%以上,為用戶帶來更快速、更流暢、更高質(zhì)量的圖像體驗(yàn)。同時(shí),系統(tǒng)也支持HEIF硬件編碼,能夠快速得到HEIF圖片。

三、圖像處理開發(fā)示例

HarmonyOS的Image組件和Image?Kit提供了通用的圖像處理API,無需針對(duì)HEIF作特殊處理,編程方式與使用JPEG、PNG等圖源一致。下面針對(duì)開發(fā)者基于系統(tǒng)能力進(jìn)行圖像處理開發(fā)時(shí),可能采取的兩種方式進(jìn)行介紹。

方式1:直接使用ArkUI提供的Image組件進(jìn)行顯示

方式簡介:

Image組件提供了通用的圖像顯示能力,解碼、渲染等流程均由系統(tǒng)完成,支持顯示BMP、SVG、GIF、PNG、JPEG、HEIF等多種圖像格式,開發(fā)者只需要將圖像資源傳遞給Image組件即可實(shí)現(xiàn)顯示效果。

適用場景:

如果開發(fā)者僅期望展示圖像,不需要額外加工處理,推薦使用這種方式實(shí)現(xiàn)。

核心代碼:

// 創(chuàng)建Image組件,直接傳入圖片文件路徑,用于顯示

build()?{

Column()?{

Image(‘images/view.heic’);

}

}

方式2:使用Image?Kit解碼得到圖像像素?cái)?shù)據(jù),進(jìn)一步處理后,再使用Image組件渲染顯示。

方式簡介:

Image?Kit提供了高效的圖像解碼能力,同樣支持顯示PNG、JPEG、BMP、SVG、GIF、HEIF等多種圖像格式,還支持指定圖像尺寸、解碼區(qū)域、動(dòng)態(tài)范圍等參數(shù)選項(xiàng),能夠滿足更多場景下的定制化需求。

適用場景:

如果開發(fā)者不希望直接展示原圖,而是需要對(duì)圖像進(jìn)行一定的后處理,推薦使用這種方式實(shí)現(xiàn)。

核心代碼:

// 解碼得到圖像像素?cái)?shù)據(jù)

imageSource?=?image.createImageSource(‘images/view.heic’);

let?decodingOptions : image.DecodingOptions = {

editable: true,

desiredPixelFormat:?image.PixelMapFormat.RGBA_8888,

};

pixelMap = imageSource.createPixelMapSync(decodingOptions);

// 對(duì)圖像進(jìn)行后處理:調(diào)用PixelMap的方法,或自行實(shí)現(xiàn)對(duì)圖像像素?cái)?shù)據(jù)的處理

// 這里以將圖像順時(shí)針旋轉(zhuǎn)90度為例

pixelMap.?rotate(90);

// 創(chuàng)建Image組件,傳入處理后的PixelMap,用于顯示

build()?{

Column()?{

Image(pixelMap);

}

}

四、HEIF圖像轉(zhuǎn)碼方法

考慮到在部分場景下,應(yīng)用可能仍然希望使用JPEG圖像,這里也給出將HEIF圖像轉(zhuǎn)碼成JPEG圖像的方法。

基于HarmonyOS Image?Kit的圖像解碼和圖像編碼能力,只需幾行代碼即可將HEIF圖像轉(zhuǎn)碼成JPEG圖像。

核心代碼:

// 創(chuàng)建ImageSource

let?imageSource =?image.createImageSource(‘images/view.heic’);

// 創(chuàng)建ImagePacker

const?imagePacker =?image.createImagePacker();

// HEIF到JPEG的轉(zhuǎn)碼,指定編碼選項(xiàng),將圖片編碼為JPEG

// quality推薦設(shè)置為95,保證較好的圖片質(zhì)量的同時(shí),使編碼后的圖片文件體積更小

// 如果希望保留圖片的EXIF信息,必須將needsPackProperties參數(shù)指定為true

let?packOptions:?image.PackingOption =?{

format:?“image/jpeg”?,

quality: 95,

needsPackProperties: true,

};

await?imagePacker.packToFile(imageSource, file.fd, packOptions);

// 使用完成后,釋放編碼器和圖像源

imagePacker.release();

imageSource.release();

了解更多鴻蒙HEIF圖像開發(fā)指導(dǎo),請(qǐng)?jiān)L問HarmonyOS官網(wǎng):

  1. 如何處理HEIF圖片:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/heif-adapter-faq?ha_source=rrdscpjl&ha_sourceId=89000499
  2. ImageKit開發(fā)指南:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/image-kit?ha_source=rrdscpjl&ha_sourceId=89000499
  3. ImageKit?API參考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/image-api?ha_source=rrdscpjl&ha_sourceId=89000499
更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 目前還沒評(píng)論,等你發(fā)揮!