どのように私はImageMagickの(のImagick API)を使用してJPGファイルを処理するのですか?私がしようとwhenver私は、例外、NoDecodeDelegateForThisImageFormatを取得しています

StackOverflow https://stackoverflow.com/questions/2285161

  •  21-09-2019
  •  | 
  •  

質問

私はプロセスアップロードJPGファイルにPHPのImagick APIでのImageMagickを使用しています - 。しかし、私はブロブを読んだりしても物理的なファイルを読み込むしようとしたとき、私はNoDecodeDelegateForThisImageFormat例外を取得します。

私が使用していたコードの例を以下に示します:

private function resizeImageBlob($blob, $width, $height) {
    $image = new Imagick();
    $image->readImageBlob($blob);
    $image->resizeImage($width, $height, IMAGICK::FILTER_LANCZOS, 1);
    $resizedBlob = $image->getImageBlob();

    return $resizedBlob;
}

は、BLOBが表す画像がjpg画像であるが、それは行を読み取るしようとしたときのImageMagickは例外をスロー:

$image->readImageBlob($blob);

ん、誰も知っている、なぜこれが起こってかもしれない?

役に立ちましたか?

解決

私は私の問題への答えを考え出しました。例外が発生した理由は、実際にライブラリを内蔵JPEGをサポートしていませんでしたが、のImagick PHP拡張モジュールのバージョンとのImageMagickライブラリのバージョンが異なっていたので、これが起こった理由だったという事実によるものでした。

この問題に遭遇するかわからないようにする良い方法は、を、ImageMagickのライブラリとのImagick PHP拡張の両方をダウンロードし、具体的に、彼らはは一致していることを確認するためにバージョンを見ることである。

また、あなたはあなたのphp.iniファイルでそれを可能にし、使用してPHP / extにフォルダ内のあなたのImagick PHP拡張モジュールのバージョンを確認することができます。

echo phpinfo();

拡張機能のバージョンを確認します。その後、あなたはImageMagickのライブラリの同じバージョンをダウンロードすることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top