文件名称:谷歌开源的超强JPEG编辑器Guetzli,图片最高可压缩35%.zip
文件大小:323KB
文件格式:ZIP
更新时间:2022-08-08 00:52:19
开源项目
谷歌在开源社区发布了一款最新的JPEG图片编辑器Guetzli,其压缩能力强大。 谷歌表示,Guetzli在将无损图片转换成JPEG格式的过程中,步骤与传统编辑器(如:libjepg)无异,但通过新型算法对图片的色彩和细腻度进行了优化,从而在画质与文件体积方面取得了完美平衡。 Guetzli,在瑞士德语中是“cookie(曲奇)”的意思,是一个针对数码图像和网页图像的 JPEG 编码器,能够通过产生更小的 JPEG 文件来达到更快的在线体验,并且同时保持与当前浏览器,图像处理应用和 JPEG 标准的兼容性。Google 称 Guetzli 创建高质量的 JPEG 图像文件的大小比当前的压缩方法要再小 35%。 JPEG 图像的视觉质量与它的多阶段压缩过程有关:色彩空间变换,离散余弦变换,以及量化等等。Guetzli 具体针对量化阶段,图像视觉质量损失越多,输出图像尺寸越小。Guetzli 努力通过一个搜索算法,来克服 JPEG 格式的精神视觉模型与 Guetzli 的精神视觉模型之间的差别,以一种更全面更详细的方式来结合色彩感知和视觉掩蔽,从而在最小化损失和最小化图像尺寸中达到平衡。不过,尽管 Guetzli 可以使图像尺寸更小,但创建压缩图像所花费的时间要与目前的方法更长。 上图为 16x16 像素样本,是挂在蓝天下的一根电话线,传统 JPEG 算法经常会遇到的失真状况。左边是未压缩的原图,中间为较小尺寸的 libjpeg,右边是失真更少的 Guetzli 。 Google 还表示在实验中把压缩图像的尺寸设为常数,相比于 libjpeg 输出的图像,在人工评估时大家总是更偏好 Guetzli 产生的图像,即使当 libjpeg 的图像和 Guetzli 的大小相同甚至更大一些。这点让他们觉得压缩速度慢一点也是值得的。 经笔者测试,Guetzli压缩极其耗时,采用单线程,125KB的图片压缩耗时达2分钟。github也有一群用户抱怨压缩极慢,8M的图片耗时20分钟。 看来被广大开发者应用还得解决性能问题才行,这样的耗时很多人都无法接受。 标签:guetzli libjepg 谷歌
【文件预览】:
guetzli-master
----.travis.yml(809B)
----guetzli.make(7KB)
----guetzli.vcxproj(11KB)
----guetzli_static.make(7KB)
----premake5.lua(1KB)
----BUILD(505B)
----tools()
--------guetzli-compare.py(1KB)
----guetzli_static.vcxproj(10KB)
----.travis.sh(915B)
----guetzli.svg(643B)
----tests()
--------golden_test.sh(1KB)
--------bees.png(173KB)
--------smoke_test.sh(1KB)
--------golden_checksums.txt(11KB)
--------png_checksums.txt(2KB)
----LICENSE(11KB)
----snapcraft.yaml(584B)
----guetzli_static.vcxproj.filters(5KB)
----png.BUILD(661B)
----CONTRIBUTING.md(2KB)
----appveyor.yml(1013B)
----guetzli()
--------dct_double.h(1KB)
--------color_transform.h(15KB)
--------idct.h(973B)
--------butteraugli_comparator.cc(16KB)
--------quality.h(775B)
--------jpeg_error.h(2KB)
--------jpeg_data_decoder.cc(2KB)
--------jpeg_huffman_decode.cc(4KB)
--------jpeg_huffman_decode.h(2KB)
--------order.inc(4KB)
--------output_image.cc(17KB)
--------preprocess_downsample.h(1KB)
--------fdct.h(994B)
--------jpeg_data_encoder.h(1KB)
--------idct.cc(4KB)
--------jpeg_data_decoder.h(1KB)
--------entropy_encode.cc(5KB)
--------jpeg_data_writer.cc(18KB)
--------fast_log.h(1005B)
--------butteraugli_comparator.h(3KB)
--------processor.cc(33KB)
--------jpeg_data_writer.h(3KB)
--------preprocess_downsample.cc(15KB)
--------quality.cc(2KB)
--------quantize.cc(973B)
--------gamma_correct.h(778B)
--------debug_print.h(2KB)
--------score.h(837B)
--------output_image.h(5KB)
--------quantize.h(1KB)
--------guetzli.cc(10KB)
--------jpeg_data_reader.h(2KB)
--------gamma_correct.cc(1KB)
--------jpeg_data.h(6KB)
--------debug_print.cc(891B)
--------jpeg_data_reader.cc(35KB)
--------jpeg_data_encoder.cc(4KB)
--------stats.h(1KB)
--------jpeg_data.cc(3KB)
--------fdct.cc(8KB)
--------jpeg_bit_writer.h(3KB)
--------score.cc(1KB)
--------comparator.h(4KB)
--------entropy_encode.h(2KB)
--------processor.h(2KB)
--------dct_double.cc(3KB)
----fuzz_target.cc(829B)
----.gitignore(174B)
----third_party()
--------butteraugli()
----Makefile(1KB)
----guetzli.vcxproj.filters(5KB)
----README.md(4KB)
----WORKSPACE(678B)
----zlib.BUILD(721B)
----guetzli.sln(2KB)