объединить 2 команды изменения размера изображения - PullRequest
2 голосов
/ 23 ноября 2011

Мне нужно изменить размер изображения с помощью Imagesmagick и создать на данный момент 2 уменьшенные версии, сделайте это так:

<?php
            $command = $IMPath.'convert -limit memory 32 input.jpg -resize 500x500  biggeroutput.jpg';
            exec($command, $output);
            $command = $IMPath.'convert -limit memory 32 input.jpg -resize 90  smalleroutput.jpg';
            exec($command, $output);
?>

Есть ли способ объединить это только с одним исполнителем? без запуска конвертировать 2 раза?

Ответы [ 2 ]

1 голос
/ 21 декабря 2011

По вопросу оптимизации шагов сжатия изображения без непосредственного ответа на ваш вопрос (например, CAFxX, я никогда не видел способа для двух выходов в одну команду ImageMagick).

Один из вариантов - создать уменьшенное изображение из изображения среднего размера из первой команды. i.e.:

  1. уменьшить исходное изображение в высоком разрешении до 500x500
  2. Уменьшите изображение 500x500 с шага 1 до 90x90

Это, безусловно, помогает скорости. Я также однажды где-то читал (боюсь, что ссылка ускользает от меня), что это не ухудшает качество, как если бы вы сократили до 90x90 от полного размера, и может на самом деле заставить его выглядеть лучше.

Использование API ImageMagick хорошо для этого работает, поскольку вы загружаете исходное изображение в память один раз, уменьшаете его один раз, сохраняете JPEG, а затем снова уменьшаете его, не загружая данные из 1. обратно в память с диска.

1 голос
/ 23 ноября 2011

В документации для командной строки ImageMagick четко указывается, что несколько выходных данных не поддерживаются: ваш единственный выбор - использовать gd или *1003* ImageMagick API-интерфейсы PHP напрямую вместокомандная строка (подсказка: используйте функции Imagick::clone или imagecreatetruecolor / imagecopy).

В качестве побочного узла таким образом вы также избегаете накладных расходов на создание отдельного процесса только для imagemagick.client.

edit: Кроме того, вы можете кэшировать эти альтернативные версии, чтобы вам не приходилось обновлять их каждый раз, когда кто-то запрашивает их.Мне пришлось сделать то же самое на нескольких сайтах с изображениями, которые я разработал несколько лет назад.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...