конвертировать изображение 75 точек на дюйм в 300 точек на дюйм, используя Imagemagick PHP - PullRequest
0 голосов
/ 09 декабря 2018

Я пытаюсь увеличить изображение jp2 с очень низким разрешением до более высокого DPI, чтобы изображение было видно без каких-либо неудобств для наших глаз.

Мне удалось прочитать строку в формате jpeg2000 и отобразить ее в виде файла PNG.(Ниже код)

$imagedata = "AAAADGpQICANCocKAAAAFGZ0eXBqcDIgAAAAAGpwMiAAAAAtanAyaAAAABZpaGRyAAAAyAAAAKAAAwcHAAAAAAAPY29scgEAAAAAABAAAAGXanAyY/9P/1EALwAAAAAAoAAAAMgAAAAAAAAAAAAAAKAAAADIAAAAAAAAAAAAAwcBAQcBAQcBAf9SAAwAAAABAQUEBAAA/1wAI0JvGG7qbupuvGcAZwBm4l9MX0xfZEgDSANIRU/ST9JPYf9kACIAAUNyZWF0ZWQgYnk6IEpKMjAwMCB2ZXJzaW9uIDQuMf+QAAoAAAAAAQMAAf9SAAwAAAABAQUEBAAA/5PPoKgT/dHUscn3uMJWDWKb153z8hPvSInB8QsdvHSg4pzoLevV6cHhwCOWrDWed1zB8RKHyC4PEhigx/MYuIx4wci8q/CEo2kiHBrV8DhszG7ymZ/UH7atm39cdbppgIDD4VYfCrB00E+GI+Qf3v1IHzVdC6k/pMRXolANASf+TQYCTKERfZoHB65rCU23EcMzjiQo+2MAmLli7aos4tyAgMOrw6tBVpk5rPA9rz1HB6Wn+siLUizMFl3TKpn7s1pJGcCba3pGnanMUNO8OP+EwaMdppACpwb6vbqSpeUbgICAgICAgID/2Q==";

$image=base64_decode($imagedata);

// Create Imagick object
$im = new Imagick();

// Convert image into Imagick
$im->readImageBlob($image);

//Set the output format
$im->setImageFormat("png");

header('Content-type: image/png');

echo $im;

Я читал, что есть возможность увеличить DPI с помощью ImageMagick.Смотрите здесь http://www.imagemagick.org/discourse-server/viewtopic.php?t=18241

Как мне добиться этого в моем PHP-скрипте (НЕ через командную строку)?Буду очень признателен за любую помощь и руководство.

1 Ответ

0 голосов
/ 09 декабря 2018

Если вы посмотрите на веб-сайт правительства Великобритании для паспортного стола , там написано, что фотографии на паспорте должны иметь ширину не менее 600 пикселей и высоту 750 пикселей.

Давайте начнем с фотографииадекватное качество (если не содержание) для г-на Бина в 600x750:

enter image description here

Если мы теперь изменим его размер до размера, соответствующего вашему изображению (160x200),затем, сделав резервную копию, вы увидите, что качество пострадала при попытке представить изображение с разрешением 160x200, и вы не можете изобрести все те пиксели, которые потеряли - они исчезли навсегда.Посмотрите на его зубы и блики в его глазах:

convert bean.jpg -resize 160x200 -resize 600x750 result.jpg

enter image description here

Итак, все, что вы можете сделать в Imagick, это:

Imagick::resizeImage ( int $columns , int $rows , int $filter , float $blur [, bool $bestfit = FALSE [, bool $legacy = FALSE ]] )

, чтобы вернуться к разрешению 600x750 и поэкспериментировать с установкой фильтра на Catrom или Lanczos.Но ты не можешь изобретать вещи, которых там нет ...

...