0

私は次の問題に遭遇していました:

// $data contains some image data

$gm = new gmagick;
$gm->readImageBlob($data);
$gm->resizeImage(
    100,
    50,
    gmagick::FILTER_LANCZOS,
    1
);

$gm->readImageBlob($data);
$gm->resizeImage(
    140,
    70,
    gmagick::FILTER_LANCZOS,
    1
);
$output = $gm->getImageBlob();

print_r($gm->getImageGeometry());

印刷します

Array ( [width] => 100 [height] => 50 )

これは予想外の結果です。gmagick の代わりに imagick を使用してまったく同じコードを実行すると、異なる (期待される) 結果が得られます。

Array ( [width] => 140 [height] => 70 )

また、興味深いことに、gmagick については、行を省略した場合

$output = $gm->getImageBlob(); 

次に、予想される画像サイズ140x70を取得します..

ここで重要なものがありませんか?

ありがとう!

4

1 に答える 1

1

getimageblobimagick と gmagick バージョンのメソッドには 1 つの違いがあります。2 つ目は内部カウンターをリセットするため、最後ではなく最初に追加された画像の寸法が常に保持されます。

gmagick 版の getimageblob

getimageblob の imagick のバージョン

カウンターをリセットする前に画像バッファーで実行されるチェックがあるため、バグのように見えます。この関数は、php net の gmagick セクションのどこにも記載されていないため、サポートされておらず、保守されていない可能性があることに注意してください。

于 2012-06-13T19:20:16.817 に答える