Imagick::scaleImage

(PECL imagick 2, PECL imagick 3)

Imagick::scaleImage缩放图像大小

描述

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

将图像大小缩放至给定尺寸。如果传递 0 作为任一参数,将计算另一个参数。

注意: 参数 bestfit 在 Imagick 3.0.0 中改变了行为。在该版本之前,给定尺寸 400x400,尺寸为 200x150 的图像将保持不变。在 Imagick 3.0.0 及更高版本中,图像将被放大至尺寸 400x300,因为这是给定尺寸的 “最佳拟合”。如果使用 bestfit 参数,则必须给出宽度和高度。

参数

columns

rows

bestfit

返回值

成功时返回 true

错误/异常

发生错误时抛出 ImagickException。

变更日志

版本 描述
PECL imagick 2.1.0 添加了可选的 fit 参数。此方法现在支持比例缩放。传递零作为任一参数进行比例缩放。

示例

示例 #1 Imagick::scaleImage()

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

?>

添加笔记

用户贡献的笔记 6 笔记

benford at bluhelix dot com
15 年前
如果有人发现 “如果传递 0 作为任一参数,将计算另一个参数” 比较令人困惑,它大致意味着以下内容

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

这将缩放图像,使其宽度变为 300 像素,并自动计算高度以保持图像的纵横比。

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

类似地,此示例将图像缩放至高度为 300 像素,该方法自动重新计算图像的高度以保持纵横比。
vincent dot hoen at gmail dot com
17 年前
这是一个轻松调整动画 GIF 尺寸的方法

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

foreach($picture as $frame){
$frame->scaleImage($width, $height);
}
octave at web dot de
15 年前
当使用 “fit = true” 选项时,图像将只缩小,但永远不会放大

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

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

$im->scaleImage(1000, 500, true); // => 666x500
?>
agamemnus at flyingsoft dot pw
10 年前
警告:这可能会以意想不到的方式模糊您的边缘。为了更好地控制,请使用 resizeImage 而不是它。
clickconvert at gmail dot com
11 年前
需要调整肖像和风景图像的大小(并转换为 72ppi)?这些将适合 800x600 的区域,而不会失真,无论有多高或多宽。

<?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();
?>
peter at icb dot at
14 年前
如果使用 fit 参数,当两个尺寸(宽度或高度)中的一个与图像的尺寸相同时,此函数有时似乎不起作用。例如

<?php
$image
= new Imagick('800x480.jpg');
$image->scaleImage(640, 480, true);

// $image 仍然是 800x480
?>

您需要自己计算新的尺寸,并将此处的 $fit 设置为 false。
To Top