Intereting Posts
Вызов функции PHP в Javascript JQM – JQuery Mobile 1.4.2 бесконечное обновление, это ошибка? Пример использования MySQL LEFT JOIN MODx :: Получить идентификатор сеанса, установленный MODx для использования в модуле Использование CakePHP FormHelper с формами Bootstrap Перенос переменной php в новое окно Как использовать оператор switch PHP, чтобы проверить, содержит ли строка слово (но может также содержать другие)? Отладка Php с помощью Aptana Studio и Xdebug или отладчика Zend в OS X Арабская форма PDF для PHP для MYSQL, декодирование Unicode? php DOMDocument – манипулирование и кодирование WooCommerce: Как вы добавляете текст перед ценой и до цены продажи? Как читать атрибут продукта woocommerce, если условие Лучший способ получить файлы из каталога, отфильтрованного определенным расширением в php Как исправить ошибку curl PHP CURLE_SSH (79) при использовании sftp для загрузки файла Добавить другой класс в четные и нечетные divs

PHP конвертирует psd в jpg, выбирая слои изображения

Я хочу, чтобы выбрать, какие слои из .PSD-изображения будут объединены в окончательное выходное изображение .JPG.

Я могу объединить все слои изображения:

$im = new Imagick('test.psd'); $im->flattenImages(); $im->setImageFormat('jpg'); $im->writeImage('test.jpg'); 

Однако .psd содержит около 10 слоев, и я хочу иметь возможность указать, какие конкретные слои должны быть объединены вместе, чтобы создать окончательное изображение.

Например, я хочу объединить только номера слоев 3, 5 и 10 или слои с именами «RED», «GREEN», «BLUE»,

    Хотя ответ hsz верен, и это лучший способ, когда изображения очень большие, вам нужно заранее знать, какие слои вы хотите объединить.

    Вы можете сделать то же самое более программно, используя setIteratorIndex для доступа к отдельным слоям и добавления их к выходному изображению.

      $imagick = new \Imagick(realpath("../images/LayerTest.psd")); $output = new \Imagick(); $imagick->setIteratorIndex(1); $output->addImage($imagick->getimage()); $imagick->setIteratorIndex(2); $output->addImage($imagick->getimage()); $merged = @$output->flattenimages(); $merged->setImageFormat('jpg'); $merged->writeImage('test.jpg'); 

    Вы можете получить доступ к третьему слою с помощью

     test.psd[3] 

    Просто попробуйте:

     $im = new Imagick(array('test.psd[3]', 'test.psd[5]', 'test.psd[10]'));