www.Litecode.ru – Сборник рецептов для создания сайтов

Ресайз изображений с помощью ImageMagick

ГлавнаяPerl → Ресайз изображений

Изменять размер фото с помощью ImageMagick можно несколькими способами. Основной способ это метод Resize. Обязательные параметры, которые принимает метод Resize, geometry, width или height. Необходим хотя бы один из трех. Причем, width или height, следует использовать осторожно. При ресайзе с помощью этих параметров, не учитывается отношение сторон. Если укажите только width или height, измениться размер только одной стороны и изображение исказится. Если указать и width, и height, но при этом ошибиться в расчетах, изображение так же будет искажено. Width и height принимают только целочисленные значения:

width=>integer, height=>integer
width=>300
height=>250
или одновременно:
width=>300,height=>250

Для автоматического сохранения отношения сторон в масштабе, следует использовать параметр geometry. Принимает значения в следующем формате:

geometry=>'widthxheight'
geometry=>'300x250' # приоритет для ширины 
geometry=>'300' # приоритет для ширины
geometry=>'х300' # приоритет для высоты

Где первое значение это ширина, второе - высота. Одно из них обязательное. При таком способе указания размеров для ресайза, изображение будет изменено в масштабе.

Например, размеры исходного изображения 1280х1024:

use strict;
use Image::Magick;

my $img = new Image::Magick;
my $err = $img->Read( '/абсолютный путь к исходному изображению/img.jpg' );
$err = $img->Resize( geometry=>'300' );
$err = $img->Write( '/абсолютный путь к изображению после ресайза/new_img.jpg' );

На выходе получим 300 х 240.

Если требуется ресайз по высоте, то указываем так:

$err = $img->Resize( geometry=>'х300' );

В итоге получим 375 x 300.