【发布时间】:2019-01-12 13:41:23
【问题描述】:
我使用(在 Windows 下)以下命令
magick convert -units pixelsperinch file_in -density 600 file_out
设置JPG图像的dpi(不重新采样,据我所知,dpi基本上是一个指定像素大小的标签)。它有效,但我不明白为什么它将文件大小增加了几千字节(我最初的 1658 kB 的图像变成了 1717 kB,增加了 59 kB),而我希望增加(如果有的话)只有几个字节。
我是不是搞错了什么?是否可以在不增加文件大小的情况下通过命令行(也欢迎使用 ImageMagick 以外的工具)更改 JPG 的密度/dpi?
提前感谢任何线索。
【问题讨论】:
-
请参阅下面的 Mark Setchell 的回答。文件大小发生的原因是 Imagemagick 将解压缩并重新压缩您的 JPG。仅此一项可能会改变文件大小,但尤其是如果您的输入 JPG 未指定其质量,因此 Imagemagick 会以 92 的高质量级别分配和重新压缩。输入和输出之间的不同 JPG 压缩表也可能导致差异和不同采样因子。所以你应该用
magick identify -verbose image.jpg检查输入和输出。另请注意,在 Imagemagick 7 中,仅使用 magick,而不是 magick convert 或 convert。 -
如果您压缩您的输入和输出图像并将它们托管在其他地方,然后发布链接以便本论坛不会重新编码它们并可能更改图像,那么我们可以查看您的图像元数据使用
magick identify -verbose image.jpg -
@fmw42 以下是dpi更改前后的图片链接:drive.google.com/open?id=1vK9JSH3CaCeufrmozJE_KWGAB3MNnX3Qdrive.google.com/open?id=1DW7ATCgWczVCHzIKjRcU9XctEKtoamut~另外注意如果我用jpegran优化图片,原来的dpi 丢失。
-
@fmw42 更多测试表明,如果我使用 Image Magick 更改 dpi,则在进行 jpegtran 无损优化后,文件大小会增加并且 dpi 会丢失,而如果我用 Irfanview (通过命令行)更改 dpi,文件会减小(可能是因为 Irfanview 将色彩空间从 CMYK 转换为 sRGB)并且 dpi 在 之后不会丢失b>jpegtran 无损优化。
-
@mmj正如我上面所说的,即使您只是更改 dpi,Imagemagick 也会解压缩并重新压缩。所以你想使用其他一些不这样做的工具。 JPG解压再压缩时文件大小会发生变化的原因有很多。
标签: image imagemagick jpeg pixel-density