使用300 DPI进行JPEG到PNG转换

时间:2015-01-05 10:37:29

标签: perl image-processing imagemagick dpi

无法使用ImageMagick将JPEG图像转换为300 DPI PNG图像。

转换后,PNG图像仅为72 DPI。我使用ImageMagick 6.9.0-0 Q16 x86和Ghostscript v9.15。

以下是我在Perl脚本中使用的行:

 system("\"$imagemagick\" -set units PixelsPerInch -density 300 \"$jpg\" \"$png\"");

2 个答案:

答案 0 :(得分:1)

调整单位&密度不会改变下划线图像数据,但会更新渲染库的元信息。矢量到栅格很重要,但对栅格到栅格不是很有用。要调整图像的DPI,请使用-resample操作。

convert source.jpg -resample 300 out.png

使用以下内容验证DPI分辨率...

identify -format "%[resolution.x] %[resolution.y]\n" out.png

答案 1 :(得分:0)

我想知道72dpi来自哪里。假设你正在使用X和某种Unix,ImageMagick默认使用屏幕分辨率(72 dpi)。我不确定它在OSX / XQuartz下的作用,但它可能类似。您的屏幕分辨率是否设置为72dpi(!?)。

我和@emcconville @ikegami一起 - 直接从命令行上的ImageMagick这样做 - 传递正确的选项以确定。

您可以在perl中使用图像处理模块,而不必使用系统命令,例如Imager::TransformationsImage::MagickGD。以下是GD转换的方式。

perl -MGD -E 'my $imgjpg = GD::Image->newFromJpeg("img.jpg"); 
open my $imgpng, ">", "img.png" or die; print $imgpng $imgjpg->png();'

对于大多数图像处理程序包,原始分辨率显示在转换期间保持 - 尽管一些(包括GD)将默认为较低颜色深度(8位),除非传递Truecolor标记。

例如 GD::Image->newFromJpeg("img.jpg", 1);