我尝试用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
)
答案 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);
}
虽然它并不完美,因为它仅适用于方形图像的特定情况。但在这种特殊情况下,它解决了我的问题。