这个问题可能是一个“开放性问题”,你们中的许多人可能急于解决它,但请不要这样做。让我解释一下。
众所周知,JPEG有两种压缩方式(至少在Photoshop保存对话框中)
- 优化,其中图像加载类似于逐行加载
- 渐进式,其中图像首先以马赛克状加载,然后逐步变得更好,直到原始分辨率
我之前阅读过很多关于PNG/JPEG优化的文章,但现在我在通过Google随机搜索图片时遇到了这种令人惊叹的第三种压缩方式。所涉及的JPEG如下:
http://storage.googleapis.com/marc-pres/boston-event-1012/images/google-data-center.jpg
请在Chrome / Firefox中尝试加载链接(在IE / Safari中,仅当图像完全加载并显示后才能加载)
您可以观察到:
- 图像首先以黑白方式加载
- 然后看起来是红色通道已加载
- 接下来加载绿色通道
- 最后加载蓝色通道
我尝试使用模拟的非常慢的连接再次加载它,并观察到JPEG不仅按通道顺序加载,而且还以渐进的方式加载。因此,首先加载的图像是空白和白色马赛克,然后是绿色马赛克,然后逐渐变为全彩色马赛克,最后是完全分辨率和全彩色图像。
这是惊人的技术,假设您正在建立一本电子杂志,每个页面都有很多图片,您希望用户快速翻页浏览,这种图像正是最好的工具。对于快速预览,请加载空白的缩略图,如果用户停留,则完全加载原始图像。
那么我的问题是:我该如何使用Python Pillow或ImageMagick或任何种类的开源软件生成这样的图像?
如果您认为此问题不合适,请发表评论,而不要将其关闭。
更新1:
事实证明,Google在所有的JPEG图片1,2(例如this)中都使用了这项技术。
更新2:我找到了另一个clue。