2010-06-02 109 views
6

我有一张1000x1000 300dpi的图像,需要将其转换为100x100 96dpi的缩略图。我如何在ImageMagick中做到这一点?我以尽可能最高的质量尽可能缩小文件大小。ImageMagick帮助 - 需要更改DPI

做这样的事情:

convert myimage.png -quality 100 -resize 100 PNG8:mynewimage.png 

....没有改变尺寸,但仍保持着DPI。如果我可以得到这个更改为96dpi,我应该得到一个较小的文件大小。

我试过-density等,但似乎无法让他们为我工作。也许我会按错误的顺序放置命令或传递错误的参数。任何援助非常感谢。谢谢。

+0

未测试:convert myimage.png -units PixelsPerInch -density 96x96 -quality 100 -resize 100 PNG8:mynewimage.png – StackOverflowNewbie 2010-10-03 13:14:58

回答

5

简短的说法是,如果你想要一个PNG格式的100x100图像,你所拥有的行将已经在最小的文件大小下给你最好的质量。如果没有a)编码为有损格式(JPEG)或b)减少图像的颜色深度,则无法做得更好。

对于一个稍长的解释,直接从维基百科:“每英寸点数(DPI)是衡量空间打印或视频点密度,特别是单个点的数量,可以放置在一行1英寸(2.54厘米)DPI值倾向于与图像分辨率相关,但仅与间接相关。“

DPI与获取较小的文件大小无关;无论您是在300dpi屏幕上还是在96dpi屏幕上(在300dpi屏幕上它看起来会更小),您的100x100图像都会测量100x100 像素。信息量是相同的。

“-density”也不起作用,因为它只适用于“在将诸如Postscript,PDF,WMF和SVG等矢量格式渲染(读取)为栅格图像时编码栅格图像”。这些格式是分辨率无关的,所以告诉ImageMagick您想要图像光栅化的DPI是有意义的。但是,您的DPI应该是您计划使用的输出设备的功能。在你的情况下,由于你从一个已经栅格化的图像开始,这没有用。

PNG是一种无损格式,因此-quality参数仅控制zlib压缩级别;图像尺寸的任何增益都会很小,但值得使用。

+0

实际上,'-density'选项对支持它的观看者确实有所帮助。也许这个问题已经改变了,但根据[文档](http://www.imagemagick.org/script/command-line-options.php#density):“-density'选项设置一个*属性*并且不会更改底层的栅格图像。“如果您在查看器/工具(如Corel Draw)中打开图像,则在确定如何显示相对于当前画布“DPI”的图像时,将考虑此属性。 – 2013-04-29 18:19:40