PHP Conference Japan 2024

Imagick::cropThumbnailImage

(PECL imagick 2, PECL imagick 3)

Imagick::cropThumbnailImage创建裁剪缩略图

描述

public Imagick::cropThumbnailImage(int $width, int $height, bool $legacy = false): bool

通过首先放大或缩小图像并从中心裁剪指定区域来创建固定大小的缩略图。

参数

width

缩略图的宽度

height

缩略图的高度

返回值

成功时返回 true

错误/异常

发生错误时抛出 ImagickException。

添加注释

用户贡献的注释 3 条注释

6
martijn at elicit dot nl
14 年前
在我看来,此函数无法按预期工作,已针对 imagemagick 版本 6.3.7 进行测试。

如上所述,该函数返回一个具有固定高度和可变宽度的图像。以下是一个修复程序,它将返回具有定义尺寸的裁剪缩略图,而不会出现尺寸变化。

<?php
// 定义宽屏尺寸
$width = 160;
$height = 90;

// 加载图像
$i = new Imagick("您的图像文件");
// 获取当前图像尺寸
$geo = $i->getImageGeometry();

// 裁剪图像
if(($geo['width']/$width) < ($geo['height']/$height))
{
$i->cropImage($geo['width'], floor($height*$geo['width']/$width), 0, (($geo['height']-($height*$geo['width']/$width))/2));
}
else
{
$i->cropImage(ceil($width*$geo['height']/$height), $geo['height'], (($geo['width']-($width*$geo['height']/$height))/2), 0);
}
// 缩略图像
$i->ThumbnailImage($width,$height,true);

// 保存或显示或处理图像
$i->setImageFormat("png");
header("Content-Type: image/png");
exit(
$i);
?>
4
sonsandsons at gmail dot com
13 年前
值得注意的是,如果使用 .gif 图像格式,使用 cropThumbnailImage 可能会出现意外的结果。如果您使用的是 .gif,则需要使用此函数并删除画布。

<?php

// 实例化 image magick 类
$image = new Imagick($image_path);

// 裁剪和调整图像大小
$image->cropThumbnailImage(100,100);

// 删除画布
$image->setImagePage(0, 0, 0, 0);

?>
2
benford at bluhelix dot com
15 年前
我在此网站上找到了一篇相关的帖子,其中包含演示代码
http://valokuva.org/?p=8

示例代码如下
<?php
/* 读取图像 */
$im = new imagick( "test.png" );
/* 创建缩略图 */
$im->cropThumbnailImage( 80, 80 );
/* 写入文件 */
$im->writeImage( "th_80x80_test.png" );
?>

这是 cropImage 方法的专门化。在高级别上,此方法将创建给定图像的缩略图,缩略图大小为($width,$height)。

如果缩略图的纵横比与源图像不匹配,则可以使用此方法。缩略图将捕获源图像较短边上的整个图像(例如,横向图像上的垂直尺寸)。然后,缩略图将按比例缩小以满足您的目标高度,同时保持纵横比。不适合目标$width的额外水平空间将从左右两侧均匀裁剪。

因此,缩略图通常是源图像的良好表示。
To Top