(PECL imagick 2.0.0)

Imagick::scaleImageScales the size of an image


bool Imagick::scaleImage ( int $cols , int $rows [, bool $bestfit = false ] )

Scales the size of an image to the given dimensions. The other parameter will be calculated if 0 is passed as either param.

Замечание: Поведение параметра bestfit было изменено в Imagick 3.0.0. До этой версии при изменении изображения размером 200x150 до 400x300 никаких операций не происходило. В Imagick 3.0.0 и далее изображение будет масштабировано до размеров 400x300, так как это наилучшим образом соответствует ("best fit") данным размерам. Если используется параметр bestfit, то ширина и высота также должны быть определены.

Список параметров




Возвращаемые значения

В случае успешной работы возвращает TRUE.


Вызывает ImagickException при ошибке.

Список изменений

Версия Описание
2.1.0 Added optional fit parameter. This method now supports proportional scaling. Pass zero as either parameter for proportional scaling.


Here is an easy way to resize an animated gif : 

$picture = new Imagick('animated_gif.gif');

foreach($picture as $frame){
    $frame->scaleImage($width, $height);
2007-08-02 09:37:20
If anyone finds "The other parameter will be calculated if 0 is passed as either param. " to be a bit confusing, it means approximately this:

= new Imagick('example.jpg');

This scales the image such that it is now 300 pixels wide, and automatically calculates the height to keep the image at the same aspect ratio.

= new Imagick('example.jpg');

Similarly, this example scales the image to make it 300 pixels tall, and the method automatically recalculates the image's height to maintain the aspect ratio.
2009-06-16 11:38:46
When using the "fit = true" option, the image will only scale down, but never scale up:

= new Imagick('1600x1200.jpg');

$im->scaleImage(20001500true); // => 1600x1200

$im->scaleImage(1000500true); // => 666x500
2009-07-23 05:57:39
If using the fit-parameter this function sometimes seems not to work when one of the two sizes (width or height) is the same size as the image has. For example:

= new Imagick('800x480.jpg');

// $image is still 800x480

You have to calculate the new sizes yourself and use false for $fit in this case.
2009-09-22 08:25:10
Need to resize portrait and landscape images (and convert to 72ppi)? These will fit an area of 800x600 without distorting, no matter how tall or wide.

= new Imagick($img_loc.$file);
$d $img->getImageGeometry(); 
$h $d['height']; 
$h 600) {
    } else {
2012-11-08 23:50:20
Warning: this will blur your edges in possibly unexpected ways. For better control, use resizeImage, instead.
2014-03-15 17:34:48

    Поддержать сайт на родительском проекте КГБ