为什么ImageMagick生成的'.png'文件比'.jpg'和'.gif'文件要大得多?
为什么ImageMagick生成的'.png'文件比'.jpg'和'.gif'文件要大得多?
这个问题已经有了答案:
我正在使用ImageMagick将一些文件从一种格式转换为另一种格式。 我一直以为.PNG文件应该和JPEG文件一样大/小,如果不小于JPEG,那肯定比GIF小。
然而,当我运行
convert photo.jpg photo.png
输出的文件比原始的jpg文件大6倍左右。
原始jpg是一个大约300x500像素的普通照片,大小为52kb。输出是一个相同尺寸的正确的png,但是大小约为307kb?
有人知道出了什么问题吗?我做错了什么吗?
P.S.:
我在Debian和Windows上尝试了两次,结果都一样。
P.P.S.:
当我添加resize选项并将其调整为10000 x 10000时,转换和调整大小到jpg只需要几秒钟,但是如果我对png执行相同的操作,则开始完全耗尽内存
P.P.P.S.:
对于那些将此问题标记为PNG vs. GIF vs. JPEG vs. SVG - When best to use? 的人。请仔细阅读并了解问题。这不是一个重复问题,因为这个问题询问使用特定应用程序(ImageMagick)自动产生的文件。你们标记重复的问题是在询问哪种图片格式更适合在Web上使用。两个完全不同的问题。
需要注意的关键事情是每种图像文件格式都最适合特定的用途。
JPEG代表“联合摄影专家组。”这就告诉你了.JPG文件格式针对照片进行了优化。但是它不太适用于线条艺术、标志、渐变或平铺/图案背景等。与照片相比,JPG的DCT(离散余弦变换)伪像(我们都知道并且厌恶的“块状”伪像)在线条艺术和标志中更加明显。
PNG已经替代了GIF,除了GIF曾经擅长的一件事,即因没有出现明确的标准而仅有这一点:动画。动态GIF在Web上很出名。有两种对于动态PNG的竞争标准:APNG和MNG。
APNG在大多数现代浏览器中被支持,并且也是完全向后兼容的(文件扩展名为.png,而不是.apng,如果任何可以显示.png但不认识APNG的程序收到APNG,则它将显示开发人员选择的替代图像或动画的第一帧,如果没有提供此样的替代,则忽略其余内容),Gecko(FF等)和Presto(Opera)本地支持它,Google Chrome(使用Webkit)可以通过插件支持。
MNG由实际PNG格式开发团队支持,但是它是自身格式,不向后兼容,但更强大和灵活。现在只有基于KHTML(Konquerer)的浏览器支持:不包括Trident(IE),Gecko,Webkit(Chrome,Chromium,Safari)或Presto。
PNG做得比GIF更好地完成了所有任务(除非增强了APNG中的动画)。在相同的分辨率和位深度下,.PNG几乎总是比.GIF更小。与.GIF一样,png可以在索引颜色(调色板)模式下支持每像素8位的颜色深度,但与.GIF不同(但与.JPEG相同),它还支持每像素24位的直接颜色模式。
无论采用哪种模式,它都可以添加8位α透明度,而不像.GIF(只能进行索引颜色透明度[从调色板中选择一个颜色来代替100%透明度,即看不见] — .PNG也可以)。与索引透明度相比,α透明度会产生更好的效果,因为像素可以部分透明,而使用索引透明度(在.GIF中唯一可用的透明度)时,你的选择是不透明或不可见。当放置在非原来“优化”过的背景色上时,这会产生非矩形物体周围的“光环”效果。它也限制了进行效果,例如发光、投影和当然透明色彩对象(无需抖动)。阿尔法透明度可以轻松完成所有这些事情,对几乎任何背景(在白色背景上,光晕将基本看不见,在黑色背景上,投影将不可见,但你知道我是什么意思)。
没错,你可以在带调色板索引的PNG图像中实现8位的透明度! 而且你猜怎么着?甚至Microsoft Internet Explorer 6也可以完全显示它们,包括透明度!只有32位的.PNG图像(24位RGB色彩+8位透明度)会让IE6噎住并显示为灰色!
最知名的能够以PNG8(带调色板索引)和透明度导出的程序是Adobe(前Macromedia)Fireworks。 Photoshop的“保存为Web和设备”(至少在CS3时)不能做到这一点,尽管当Adobe收购了Macromedia时,它基本上从Fireworks中吸收了这一特性。它可以保存PNG8,但仅带有索引颜色透明度。
无论如何,完整的32位(甚至24位)PNG图像将是相当大的,虽然通常比最近的相等BMP或TGA或未压缩的TIFF图像要小得多(除非你试图用它做照片 - 那就用JPEG!)。如果其他条件相等,它通常甚至会比RLE(无损压缩的BMP)或无损压缩的TIF要小。
与大多数其他格式不同,PNG还支持有选择的16位透明度的48位RGB色彩,具有极高的质量(比大多数显示器可以显示的要高得多)。这些最好用作中间存储格式,以保留来自高位深度扫描仪或相机(RAW模式)等的信息。尽管有无损压缩,它们的文件大小仍会相当大。
.PNG目前无法处理像CMYK或L * a * b之类的非RGB颜色空间。
简而言之:
- 对于照片,请使用JPG。
- 对于有限颜色的线条艺术和标志,请使用带有透明度的索引颜色.PNG(PNG8)。
- 对于有广泛颜色的线条艺术和标志(例如有大量渐变填充、金属铬类反射效果等),请使用带有透明度的直接颜色.PNG(PNG24)如果需要最佳质量或需要透明度(并且不介意它不能在IE6中工作或使用各种IE6透明PNG的解决方法),并且不介意更大的文件和带宽使用情况。否则,请使用JPG,但请注意质量会降低。您可能需要相当高的JPEG质量,特别是对于具有其中的“文本”的标志或其他图形,这将降低您的文件大小节省。
- 对于非Flash / Silverlight / video / HTML5 Canvas动画,GIF目前是首选,但准备切换到APNG(我认为即使JPEG开发人员更官方的支持MNG也无法击败它)。