HEIF最小的图片格式,比WebP小,是jpg的三分之一

Android Q的一项新功能是支持高效图像格式(HEIF)图像,但为什么这很重要?在这篇文章中,我们将看看HEIF实际上是什么,并了解它可能带来的好处。

HEIF由运动图像专家组(MPEG)开发,是一种压缩容器格式,声称比JPEG更有效,同时提供更好的图像质量。声称HEIF图像通常是JPEG等效图像的​​一半,同时具有高质量。

要在Android Q中实际使用HEIF图像不需要任何费力,因为您可以在绘图资源中包含与JPEG图像完全相同的HEIF图像。此外,BitmapFactory它将以与JPEG图像完全相同的方式对HEIF图像进行充气。但由于硬件和许可要求,目前没有向后兼容性。Pie中包含有限的支持ImageDecoder(有关如何使用的详细信息,请参阅此文章ImageDecoder),但这取决于设备,这有点暗示存在硬件要求。

虽然目前没有读取HEIF图像的向后兼容性,但是有一个用于编写它们的支持库。它可以写入Bitmap,Surface或YUV字节缓冲区。我们可以Bitmap从资产文件中读取a 并使用以下内容将其作为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)
    }
}

虽然在我们到达之前可能觉得我们不应该使用HEIF图像,但minSdkVersion = 29实际上我们可以在此之前获益。如果您正在使用Android应用程序包,并且正在使用Play商店中的动态传送,那么在您的res/drawables-*-v29文件夹中包含HEIF图像将允许动态传送以将APK中的HEIF图像捆绑到Q和更高版本的设备中,因此从开始将会带来实实在在的好处现在包括在内。随着具有HEIF功能的设备数量的增加,这些优势将随着时间的推移而增加。

为了了解HEIF如何与JPEG进行比较,此帖子的示例应用程序读取图像并将其保存为JPEG和HEIF图像,以确保我们进行比较,因为两个图像都是由Android框架图像生成的编解码器。JPEG和HEIF使用它们使用有损压缩算法quality值,以确定如何压缩实际上有损是。两者的质量都是100,实际上是无损压缩。

该应用程序具有SeekBar允许将不同的质量值应用于图像转换的应用程序。在无损压缩(质量= 100)时,HEIF图像(顶部一个)是3.72 MB,而JPEG一个(底部一个)是5.85 MB。这非常接近半尺寸声明,我看不出图像质量有任何差异 - 但是如果压缩真的是无损的话应该不会有:


Quality-100.png

事情可能会让人感到困惑的是中等质量的价值观。JPEG图像尺寸急剧下降,而HEIF尺寸则逐渐减小。请记住,这不是真正的相似比较,因为质量值对于不同的压缩算法意味着不同的东西。


Quality-75.png
Quality-50.png

quality = 25我可以清楚地看到JPEG图像中出现一些文物,而HEIF图像看起来仍然很好 - 如果不是比JPEG图像更好quality = 50

Quality-25.png

如果我们将quality = 25上图中的JPEG 与下图中的HEIF 进行比较,则会更有趣quality = 15。文件大小相当,JPEG quality = 25为814 kB,HEIF quality = 15为891 kB。

Quality-15.png

然而,HEIF的质量要好得多。虽然有些文物开始出现,但它们远不如JPEG图像那样明显quality = 25。因此,HEIF的质量可以设置得比JPEG低得多,以在较小的图像尺寸下获得更好的质量。

只是把事情发挥到极致,就在质量标准的最底端,我们看到了一些真正的差异:

Quality-0.png

HEIF图像的大小是JPEG图像的三分之一,但质量要好得多。JPEG图像既是分色的又是块状的,而HEIF只是块状的。虽然两者都不是很好,我真的不想实际使用它们中的任何一个,但HEIF的质量明显优于JPEG,而其尺寸仅为其三分之一。

正如我之前提到的,我们无法直接比较质量值,而是应该查看任何给定质量值的图像质量。对于无损压缩,HEIF获胜,但我们可以使用低得多的质量值,HEIF仍可实现高水平压缩,同时仍保持良好的图像质量。

值得指出的是,不同的图像会有不同的压缩,所以我在这里所做的结果远非确凿的证据。也就是说,在这种情况下使用HEIF可以获得明显的尺寸/质量优势。而且我完全期望将趋势扩展到其他图像,到目前为止我对HEIF的体验倾向于支持这种观点。
ps: 最后还有个HEIF、AVIF、JPEG和WebP图像对比网站仅供参考
https://compare.rokka.io/_compare/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容

  • 前言同项目中同事使用YYModel,比原生的要简单高效许多!!!YYModel是YYKit的高效组件之一,在实际场...
    雪里的懒猪阅读 515评论 0 0
  • 1、引用其他工作表区域 若希望在公式中引用其他工作表的单元格区域,可以在公式编辑状态下,通过鼠标单击相应的工作表标...
    陶泽昱阅读 985评论 0 0
  • 寸点娇心,鬓钗斜插酡红态。春秋几载,一笑千金买。 纵得千金,难下朱颜改。相思在,愿君多采,侬倚篱门待。 (娇心、鬓...
    姑射阅读 284评论 0 3
  • 每天要哄睡老大两次,哄睡老二五次…… 哄了老大哄老二,这个哭那个闹,真是一件苦恼的事情。 丁老大...
    Summer李宁阅读 300评论 0 0