мне интересно, где 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 бит), если не был принят флаг полноцветные.
, например.GD::Image->newFromJpeg("img.jpg", 1);
Почему, на ваш взгляд, это проблема с Perl? Это работает, если вы делаете «imagemagick -set units PixelsPerInch -density 300 in.jpg out.png' из-за пределов Perl? – ikegami
Если вы используете Perl, почему вы не используете модуль [Image :: Magick Perl] (https://metacpan.org/pod/Image::Magick)? –