Intereting Posts
Как создать отношения следопытов, используя Полиморфные отношения Многие-Многие с Laravel? Magento :: Перевести текст из файлов javascript Как использовать Laravel hasManyThrough через 4 таблицы Преобразование числа в слова в индийском валютном формате с величиной паи Указание числового идентификатора на целое число для предотвращения SQL-инъекции Функция json_encode: специальные символы preg_match (): Ошибка компиляции: значение символа в \ x {} или \ o {} слишком велико при смещении 27 по строке 25 __get / __ set / __ вызов вопросов производительности с помощью PHP Функция забытого пароля не работает в CodeIgniter Удаленное подключение к базе данных MySQL Как я могу сопоставить арабские буквы, используя regexp в php PHP foreach при обработке кусков Вы указали неверную ошибку подключения к базе данных. Отслеживать, когда пользователь нажимает кнопку в браузере Блокировать загрузку исполняемых изображений (PHP)

Конвертировать .psd и .ai в PNG / JPG с помощью imagick

Я создаю миниатюры для менеджера цифровых активов, что лучший способ сделать это с помощью imagemagick?

есть ли там хороший ресурс?

Related of "Конвертировать .psd и .ai в PNG / JPG с помощью imagick"

Я решил это и поделюсь с МИРОМ! он преобразует .ai, .psd, .jpg, .png, .gif в миниатюры.

Вот функция, которая принимает 4 параметра:

$ dir – каталог для сохранения.
$ tmpName – имя для имени файла, за исключением расширения.
$ fileType – сам по себе пояснительный.
$ size – Большой или маленький.

 function thumbGenerator($dir,$tmpName,$fileType,$size){ $saveFileType = "png"; $imagePath = $dir.$tmpName.".".$fileType; $image = new Imagick(); $image->readimage($imagePath); if($fileType == "psd"){ $image->setIteratorIndex(0); } $dimensions = $image->getImageGeometry(); $width = $dimensions['width']; $height = $dimensions['height']; if($size == "large"){ $maxWidth = 720; $maxHeight =720; } if($size == "small"){ $maxWidth = 250; $maxHeight =250; } if($height > $width){ //Portrait if($height > $maxHeight) $image->thumbnailImage(0, $maxHeight); $dimensions = $image->getImageGeometry(); if($dimensions['width'] > $maxWidth){ $image->thumbnailImage($maxWidth, 0); } }elseif($height < $width){ //Landscape $image->thumbnailImage($maxWidth, 0); }else{ //square $image->thumbnailImage($maxWidth, 0); } if($size == "large"){ $image->writeImage($dir . $tmpName."-lg.".$saveFileType); } if($size == "small"){ $image->writeImage($dir . $tmpName."-sm.".$saveFileType);; } } 

@Jason – Спасибо, что поделился. Вот несколько советов для более чистого и удобного обслуживания / расширения кода. Опять же, многое зависит от ваших требований. Кроме того, я действительно не запускал этот код, поэтому прошу простить любые опечатки.

$ dir – каталог для сохранения.
$ tmpName – имя для имени файла, за исключением расширения.
$ fileType – сам по себе пояснительный.
$ size – Большой или маленький. Вы можете рассмотреть возможность выбора значения ширины пикселя для эскиза, а не строки для предопределенной ширины. Предположим, что в будущем вам понадобится большая миниатюра в новом разделе вашей страницы (т.е. значки готовой сетки с 500 пикселями для «маленьких» миниатюр). Вы должны предпочтительно определять размер в новой части кода, а не в общей функции thumbGenerator

 function thumbGenerator($dir,$tmpName,$fileType,$size){ $saveFileType = "png"; $imagePath = $dir.$tmpName.".".$fileType; $image = new Imagick(); $image->readimage($imagePath); if($fileType == "psd"){ $image->setIteratorIndex(0); } /* Simplify this code section below $dimensions = $image->getImageGeometry(); $width = $dimensions['width']; $height = $dimensions['height']; */ list($width,$height) = $image->getImageGeometry(); // <--- new code /* Use $size for the pixel width/height instead and remove the code below if($size == "large"){ $maxWidth = 720; $maxHeight =720; } if($size == "small"){ $maxWidth = 250; $maxHeight =250; } */ if($height > $width){ //Portrait if($height > $size) $image->thumbnailImage(0, $size); $dimensions = $image->getImageGeometry(); if($width > $size){ // <--- use the previously created $width variable $image->thumbnailImage($size, 0); } /* Don't need this duplicate code. }elseif($height < $width){ //Landscape $image->thumbnailImage($maxWidth, 0); */ }else{ // square or landscape $image->thumbnailImage($maxWidth, 0); } /* DRY - do not repeat yourself - Simplify it and use the pixel width in the image name if($size == "large"){ $image->writeImage($dir . $tmpName."-lg.".$saveFileType); } if($size == "small"){ $image->writeImage($dir . $tmpName."-sm.".$saveFileType);; } */ $image->writeImage($dir . $tmpName."-".$size.".".$saveFileType);; }