ImageMagick PHP нужна генерация эскизов хорошего качества

Я использую php imagemagick для создания эскиза изображения.

  • Если я даю наилучшее соответствие true и размер 50x50, создается изображение размером 36x50 (хорошее качество).
  • если я даю наилучшее соответствие false и размер 50x50, создается изображение размером 50x50 (плохое качество)

Мне нужно решение, что независимо от размера изображения (минимум я загружу 200X200), я даю ему нужно дать 50x50 с хорошим качеством и методами там в ImageMAgick ??


person AnNaMaLaI    schedule 27.05.2011    source источник
comment
Пожалуйста, покажите какой-нибудь код и, в идеале, примеры   -  person Pekka    schedule 27.05.2011
comment
Означает ли хорошее качество сохранение пропорций? Например, если вы загружаете изображение размером 300 x 200, вы хотите, чтобы оно было изменено до 75 x 50, а затем обрезано до 50 x 50 (в данном случае путем удаления 13 пикселей слева и 12 пикселей справа)?   -  person binaryLV    schedule 27.05.2011
comment
$originalImage = загруженное изображение tmp newImage = $this-›rootpath.'/'.$location_1.'/'.$thumb['name'].$name; // Передавая путь к изображению, а также ширину и высоту, необходимо сгенерировать большой палец $this->makeThumb($originalImage,$newImage,50,50,true) // В приведенном выше примере лучше всего подходит последний параметр (true/false)   -  person AnNaMaLaI    schedule 27.05.2011
comment
function makeThumb($originalImage,$newImage,$width,$height,$bestfit) { $width = intval($width); $ высота = интервал ($ высота); $im = новый Imagick(); try{ /* Прочитать файл изображения / $im-›readImage($originalImage); // Миниатюра изображения (ширина 100, сохранить размеры) / $im-›thumbnailImage($width,$height,$bestfit); // Записываем миниатюру на диск / $im-›writeImage($newImage); // Получить размер загруженного изображения / $size = getimagesize($newImage); // Получить текущую разницу в высоте и ширине*/ } catch (ImagickException $e) { return false; } вернуть истину; $im-›уничтожить(); }   -  person AnNaMaLaI    schedule 27.05.2011
comment
* Если я загружаю 300x200 .. Нужно найти центральную точку этого изображения и вычислить оттуда 50x50 .. нужно удалить слева и справа несколько пикселей   -  person AnNaMaLaI    schedule 27.05.2011


Ответы (2)


Взгляните на PHP Thumb (лицензия MIT).

Он поддерживает адаптивное изменение размера.

Что он делает, так это изменяет размер изображения, чтобы максимально приблизиться к желаемым размерам, а затем обрезает изображение до нужного размера из центра.

require_once '/path/to/ThumbLib.inc.php';  

$thumb = PhpThumbFactory::create('test.jpg');  
$thumb->adaptiveResize(50, 50)->save('/path/to/new_thumb.jpg');  

PHP Thumb — это легкая библиотека для работы с изображениями, предназначенная для создания эскизов. Он имеет возможность изменять размер по ширине, высоте и процентам, создавать собственные обрезки или квадратные обрезки от центра и поворачивать изображение.

PHP Thumb WIKI

person Benjamin Cremer    schedule 27.05.2011

Используйте $im->cropThumbnailImage() вместо $im->thumbnailImage().

person binaryLV    schedule 27.05.2011