无法使用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\"");
答案 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::Transformations
,Image::Magick
和GD
。以下是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);