Imagick::scaleImage

(PECL imagick 2, PECL imagick 3)

Imagick::scaleImage β€” Dimensiona o tamanho de uma imagem

DescriΓ§Γ£o

public Imagick::scaleImage(
    int $columns,
    int $rows,
    bool $bestfit = false,
    bool $legacy = false
): bool

Dimensiona o tamanho de uma imagem para as dimensΓ΅es fornecidas. O outro parΓ’metro serΓ‘ calculado se 0 for passado como qualquer um dos parΓ’metros.

Nota: O comportamento do parΓ’metro bestfit mudou na Imagick 3.0.0. Antes desta versΓ£o, dadas as dimensΓ΅es 400x400, uma imagem de dimensΓ΅es 200x150 permaneceria intocada. Na Imagick 3.0.0 e superiores, a imagem serΓ‘ escalada para 400x300, pois este Γ© o "melhor ajuste" para as dimensΓ΅es fornecidas. Se o parΓ’metro bestfit for usado, tanto a largura quanto a altura devem ser informadas.

ParΓ’metros

columns

rows

bestfit

Valor Retornado

Retorna true em caso de sucesso.

Erros/ExceΓ§Γ΅es

LanΓ§a uma exceΓ§Γ£o ImagickException em caso de erro.

Registro de AlteraΓ§Γ΅es

VersΓ£o DescriΓ§Γ£o
PECL imagick 2.1.0 Adicionado parΓ’metro de ajuste opcional. Este mΓ©todo agora oferece suporte ao dimensionamento proporcional. Passe zero como qualquer parΓ’metro para dimensionamento proporcional.

Exemplos

Exemplo #1 Exemplo de Imagick::scaleImage()

<?php
function scaleImage($imagePath) {
$imagick = new \Imagick(realpath($imagePath));
$imagick->scaleImage(150, 150, true);
header("Content-Type: image/jpg");
echo
$imagick->getImageBlob();
}

?>

οΌ‹adicionar nota

Notas de UsuΓ‘rios 5 notes

up
28
benford at bluhelix dot com ΒΆ
16 years ago
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:

<?php
$im
= new Imagick('example.jpg');
$im->scaleImage(300, 0);
?>

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.

<?php
$im
= new Imagick('example.jpg');
$im->scaleImage(0, 300);
?>

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.
up
9
vincent dot hoen at gmail dot com ΒΆ
18 years ago
Here is an easy way to resize an animated gif :

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

foreach($picture as $frame){
$frame->scaleImage($width, $height);
}
up
6
octave at web dot de ΒΆ
16 years ago
When using the "fit = true" option, the image will only scale down, but never scale up:

<?php
$im
= new Imagick('1600x1200.jpg');

$im->scaleImage(2000, 1500, true); // => 1600x1200

$im->scaleImage(1000, 500, true); // => 666x500
?>
up
5
clickconvert at gmail dot com ΒΆ
12 years ago
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.

<?php
$img
= new Imagick($img_loc.$file);
$img->setImageResolution(72,72);
$img->resampleImage(72,72,imagick::FILTER_UNDEFINED,1);
$img->scaleImage(800,0);
$d = $img->getImageGeometry();
$h = $d['height'];
if(
$h > 600) {
$img->scaleImage(0,600);
$img->writeImage($resized_loc.$file);
} else {
$img->writeImage($resized_loc.$file);
}
$img->destroy();
?>
up
2
agamemnus at flyingsoft dot pw ΒΆ
11 years ago
Warning: this will blur your edges in possibly unexpected ways. For better control, use resizeImage, instead.
To Top