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

サムネイル画像の幅を 1 ピクセル小さくするのはなぜですか? どうすればこれを防ぐことができますか? 入力画像の幅と高さが常に同じであるとは限らず、そのような場合にサムネイルを埋めたくないので、の最後の$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 に答える