0

我尝试使用 Imagick 制作缩略图。为了使问题更简单,我有以下测试代码:

//loading picture
$image = new Imagick('/home/ytg/temp/blank.png');
//checking image size
echo "width: {$image->getimagewidth()}\n";
echo "height: {$image->getimageheight()}\n";
//creating thumbnail
$image->thumbnailImage(220, 220, true);
//checking image size
echo "new width: {$image->getimagewidth()}\n";
echo "new height: {$image->getimageheight()}\n";

这给了我以下结果:

width: 300
height: 300
new width: 219
new height: 220

为什么它会使缩略图图像宽度变小一个像素?我怎样才能防止这种情况发生?我不想使用 的最后一个$fill参数thumbnailImage(),因为输入图像并不总是具有相同的宽度和高度,并且我不喜欢在这些情况下填充缩略图。

( PHP Version => 5.4.6-1ubuntu1.1; imagick module version => 3.1.0RC1)

4

1 回答 1

-1

现在我正在解决这个解决方案:

$image = new Imagick('/home/ytg/temp/blank.png');
//checking image size
echo "width: {$image->getimagewidth()}\n";
echo "height: {$image->getimageheight()}\n";
//creating thumbnail
$image->thumbnailImage(220, 220, true);
//checking image size
echo "new width: {$image->getimagewidth()}\n";
echo "new height: {$image->getimageheight()}\n";        
$image->thumbnailImage($width, $height, true);                                                
if (($width == $height) && ($image->getImageWidth() != $image->getImageHeight())) {
    $image->thumbnailImage($width, $height, true, true);            
}

但它并不完美,因为它仅适用于方形图像的特定情况。但在那种特殊情况下,它解决了我的问题。

于 2013-02-05T07:41:37.567 回答