为什么Imagick失败了我的缩略图?

时间:2013-01-30 10:30:40

标签: php imagick

我尝试用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

1 个答案:

答案 0 :(得分:-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);            
}

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