HEIF最小的圖片格式瘦赫,比WebP小辰晕,是jpg的三分之一

Android Q的一項新功能是支持高效圖像格式(HEIF)圖像,但為什么這很重要确虱?在這篇文章中含友,我們將看看HEIF實際上是什么,并了解它可能帶來的好處校辩。

HEIF由運動圖像專家組(MPEG)開發(fā)窘问,是一種壓縮容器格式,聲稱比JPEG更有效宜咒,同時提供更好的圖像質(zhì)量惠赫。聲稱HEIF圖像通常是JPEG等效圖像的??一半,同時具有高質(zhì)量故黑。

要在Android Q中實際使用HEIF圖像不需要任何費力儿咱,因為您可以在繪圖資源中包含與JPEG圖像完全相同的HEIF圖像。此外场晶,BitmapFactory它將以與JPEG圖像完全相同的方式對HEIF圖像進行充氣混埠。但由于硬件和許可要求,目前沒有向后兼容性诗轻。Pie中包含有限的支持ImageDecoder(有關(guān)如何使用的詳細信息钳宪,請參閱此文章ImageDecoder),但這取決于設(shè)備,這有點暗示存在硬件要求吏颖。

雖然目前沒有讀取HEIF圖像的向后兼容性搔体,但是有一個用于編寫它們的支持庫。它可以寫入Bitmap侦高,Surface或YUV字節(jié)緩沖區(qū)嫉柴。我們可以Bitmap從資產(chǎn)文件中讀取a 并使用以下內(nèi)容將其作為HEIF寫入本地緩存目錄HeifWriter:

suspend fun convertToHeif(assetName: String): Long {
    return withContext(Dispatchers.IO) {
        val bitmap = readBitmapAsset(assetName)
        val file = File(context.cacheDir, "beach_huts.heif")
        HeifWriter.Builder(
            file.canonicalPath,
            bitmap.width,
            bitmap.height,
            HeifWriter.INPUT_MODE_BITMAP
        )
            .setQuality(quality)
            .build().apply {
                start()
                addBitmap(bitmap)
                stop(0)
                close()
            }
        file.length()
    }
}
 
private fun readBitmapAsset(assetName: String): Bitmap {
    return context.assets.open(assetName).use { inputStream ->
        BitmapFactory.decodeStream(inputStream)
    }
}

雖然在我們到達之前可能覺得我們不應(yīng)該使用HEIF圖像厌杜,但minSdkVersion = 29實際上我們可以在此之前獲益奉呛。如果您正在使用Android應(yīng)用程序包,并且正在使用Play商店中的動態(tài)傳送夯尽,那么在您的res/drawables-*-v29文件夾中包含HEIF圖像將允許動態(tài)傳送以將APK中的HEIF圖像捆綁到Q和更高版本的設(shè)備中瞧壮,因此從開始將會帶來實實在在的好處現(xiàn)在包括在內(nèi)。隨著具有HEIF功能的設(shè)備數(shù)量的增加匙握,這些優(yōu)勢將隨著時間的推移而增加咆槽。

為了了解HEIF如何與JPEG進行比較,此帖子的示例應(yīng)用程序讀取圖像并將其保存為JPEG和HEIF圖像圈纺,以確保我們進行比較秦忿,因為兩個圖像都是由Android框架圖像生成的編解碼器。JPEG和HEIF使用它們使用有損壓縮算法quality值蛾娶,以確定如何壓縮實際上有損是灯谣。兩者的質(zhì)量都是100,實際上是無損壓縮蛔琅。

該應(yīng)用程序具有SeekBar允許將不同的質(zhì)量值應(yīng)用于圖像轉(zhuǎn)換的應(yīng)用程序胎许。在無損壓縮(質(zhì)量= 100)時,HEIF圖像(頂部一個)是3.72 MB罗售,而JPEG一個(底部一個)是5.85 MB辜窑。這非常接近半尺寸聲明,我看不出圖像質(zhì)量有任何差異 - 但是如果壓縮真的是無損的話應(yīng)該不會有:


Quality-100.png

事情可能會讓人感到困惑的是中等質(zhì)量的價值觀寨躁。JPEG圖像尺寸急劇下降穆碎,而HEIF尺寸則逐漸減小。請記住职恳,這不是真正的相似比較所禀,因為質(zhì)量值對于不同的壓縮算法意味著不同的東西。


Quality-75.png
Quality-50.png

quality = 25我可以清楚地看到JPEG圖像中出現(xiàn)一些文物话肖,而HEIF圖像看起來仍然很好 - 如果不是比JPEG圖像更好quality = 50北秽。

Quality-25.png

如果我們將quality = 25上圖中的JPEG 與下圖中的HEIF 進行比較,則會更有趣quality = 15最筒。文件大小相當(dāng)贺氓,JPEG quality = 25為814 kB,HEIF quality = 15為891 kB。

Quality-15.png

然而辙培,HEIF的質(zhì)量要好得多蔑水。雖然有些文物開始出現(xiàn),但它們遠不如JPEG圖像那樣明顯quality = 25扬蕊。因此搀别,HEIF的質(zhì)量可以設(shè)置得比JPEG低得多,以在較小的圖像尺寸下獲得更好的質(zhì)量尾抑。

只是把事情發(fā)揮到極致歇父,就在質(zhì)量標(biāo)準(zhǔn)的最底端,我們看到了一些真正的差異:

Quality-0.png

HEIF圖像的大小是JPEG圖像的三分之一再愈,但質(zhì)量要好得多榜苫。JPEG圖像既是分色的又是塊狀的,而HEIF只是塊狀的翎冲。雖然兩者都不是很好垂睬,我真的不想實際使用它們中的任何一個,但HEIF的質(zhì)量明顯優(yōu)于JPEG抗悍,而其尺寸僅為其三分之一驹饺。

正如我之前提到的,我們無法直接比較質(zhì)量值缴渊,而是應(yīng)該查看任何給定質(zhì)量值的圖像質(zhì)量赏壹。對于無損壓縮,HEIF獲勝疟暖,但我們可以使用低得多的質(zhì)量值卡儒,HEIF仍可實現(xiàn)高水平壓縮,同時仍保持良好的圖像質(zhì)量俐巴。

值得指出的是骨望,不同的圖像會有不同的壓縮,所以我在這里所做的結(jié)果遠非確鑿的證據(jù)欣舵。也就是說擎鸠,在這種情況下使用HEIF可以獲得明顯的尺寸/質(zhì)量優(yōu)勢。而且我完全期望將趨勢擴展到其他圖像缘圈,到目前為止我對HEIF的體驗傾向于支持這種觀點劣光。
ps: 最后還有個HEIF、AVIF糟把、JPEG和WebP圖像對比網(wǎng)站僅供參考
https://compare.rokka.io/_compare/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绢涡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子遣疯,更是在濱河造成了極大的恐慌雄可,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異数苫,居然都是意外死亡聪舒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門虐急,熙熙樓的掌柜王于貴愁眉苦臉地迎上來箱残,“玉大人,你說我怎么就攤上這事止吁”患” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵赏殃,是天一觀的道長敷待。 經(jīng)常有香客問我,道長仁热,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任勾哩,我火速辦了婚禮抗蠢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘思劳。我一直安慰自己迅矛,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布潜叛。 她就那樣靜靜地躺著秽褒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪威兜。 梳的紋絲不亂的頭發(fā)上销斟,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天,我揣著相機與錄音椒舵,去河邊找鬼蚂踊。 笑死,一個胖子當(dāng)著我的面吹牛笔宿,可吹牛的內(nèi)容都是我干的犁钟。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼泼橘,長吁一口氣:“原來是場噩夢啊……” “哼涝动!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起炬灭,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤醋粟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體昔穴,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡镰官,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了吗货。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泳唠。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖宙搬,靈堂內(nèi)的尸體忽然破棺而出笨腥,到底是詐尸還是另有隱情,我是刑警寧澤勇垛,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布脖母,位于F島的核電站,受9級特大地震影響闲孤,放射性物質(zhì)發(fā)生泄漏谆级。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一讼积、第九天 我趴在偏房一處隱蔽的房頂上張望肥照。 院中可真熱鬧,春花似錦勤众、人聲如沸舆绎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吕朵。三九已至,卻和暖如春窥突,著一層夾襖步出監(jiān)牢的瞬間努溃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工波岛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留茅坛,地道東北人。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓则拷,卻偏偏與公主長得像贡蓖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子煌茬,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容

  • 前言同項目中同事使用YYModel斥铺,比原生的要簡單高效許多!L成啤晾蜘!YYModel是YYKit的高效組件之一邻眷,在實際場...
    雪里的懶豬閱讀 516評論 0 0
  • 1、引用其他工作表區(qū)域 若希望在公式中引用其他工作表的單元格區(qū)域剔交,可以在公式編輯狀態(tài)下肆饶,通過鼠標(biāo)單擊相應(yīng)的工作表標(biāo)...
    陶澤昱閱讀 990評論 0 0
  • 寸點嬌心,鬢釵斜插酡紅態(tài)岖常。春秋幾載驯镊,一笑千金買。 縱得千金竭鞍,難下朱顏改板惑。相思在,愿君多采偎快,儂倚籬門待冯乘。 (嬌心、鬢...
    姑射閱讀 289評論 0 3
  • 每天要哄睡老大兩次晒夹,哄睡老二五次…… 哄了老大哄老二裆馒,這個哭那個鬧,真是一件苦惱的事情惋戏。 丁老大...
    Summer李寧閱讀 304評論 0 0