web-dev-qa-db-ja.com

ImageMagick:この画像フォーマットのデコードデリゲートなし `'@ error / constitute.c / ReadImage / 504

問題:ImageMagick変換は画像をトリミングできません。画像タイプが認識されないようです。

私が試したもの:

私はオンラインで検索しましたが、似たような問題をいくつか見ましたが、私は見ていません。私は彼らの解決策を試みました

  • Brew経由でImageMagickをアンインストールして再インストールします。
  • リスト形式を識別します(JPEG、GIF、PNG、TIFFなどがすべてあり、すべてにrwパーミッションがありました)
  • convert -version(pngは組み込みデリゲートの1つです)
  • convert pic1.png pic1-jpg.jpg(これはうまくいきました)
  • convert pic1-jpg.jpg pic1-jpg.jpg(これはうまくいきました)
  • convert pic1-jpg.jpg 805X972 + 34 + 94 pic1-jpg-crop.jpg(これは、下に示すようにpngと同じエラーを出しました)

私はMac OSX El Capitanに取り組んでいますが、ターミナルの他のすべては問題なく動作します。 ImageMagickはすでにインストールされています。

実行すると:

$ convert /Users/Innovate/Desktop/crop/2015-04-26-GinaDate13_487.png 805X972+34+94 /Users/Innovate/Desktop/crop/2015-04-26-GinaDate13_487-cropped.png 

I get:

変換:イメージを開けません `805X972 + 34 + 94 ':そのようなファイルまたはディレクトリはありません@ error/blob.c/OpenBlob/2702。

変換:この画像形式のデコードデリゲートなし `'@ error/constitute.c/ReadImage/504。

この画像形式のデコードデリゲートなし `'@ error/constitute.c/ReadImage/504

この問題に関する他の投稿では、人々は

この画像形式「PNG」のデコードデリゲートを変換しない

または類似(画像タイプまたはファイル名と画像タイプを除く)

しかし、私は画像ファイルの種類について何も言わない...

ImageMagickをアンインストールしてからソースから手動でインストールしようとはしていません。自信がありません...(この解決策が示されました: https://stackoverflow.com/a/34633084/539866 =)

誰が何が起こっているのか知っていますか?

また、@ error/constitute.c/ReadImage/504部分の解釈を手伝ってもらえますか? constitute.c のコードを見ていますが、問題を解決するためにそこから有用な情報を得ることができるかどうかわかりません(Cを少ししか知りません)

ありがとうございました!

15
Montag
brew remove imagemagick //to delete current version
brew install imagemagick --build-from-source

macで私のためにそれを修正しました

13
cfphpflex

さて、いじくり回して解決策を見つけたので、この問題に遭遇する可能性のある他の人のためにここに投稿しています:

どうやら、これはImageMagick変換を使用して画像をトリミングする方法ではない/もはやない/そうではありません。この使用法が示されていても here El Capitanを使用することで機能しませんでした(OSである可能性があります)。

使用する代わりに

img.png 805X972 + 34 + 94を変換img-crop.png

正しいコマンドは、次のとおりです。

変換image.png -crop 805X972 + 34 + 94 image-crop.png

つまり、コマンドは次のようになります。

convert image.ext -cropheightXwidth+positionX+ positionY * imagecropped.ext

より多くを見つけることができます こちら 。そのImageMagickページの説明から、私は彼らがconvert roseを持っている例について混乱していました:-cropそしてそれは正常に動作します。

2
Montag

私もここ数日間この問題に苦労してきたので、私の2セントを投じました。ローカルマシンでImageMagickコマンドを実行しても問題はありませんでしたが、Azure Cloudで実行されているTomcatサーバーからコマンドを実行したときにOPが述べたエラーメッセージが表示されました。

次のコマンドを実行して原因を特定できました。

convert -list format

ローカルマシンでは、サポートされているすべての形式の非常に長いリストが返されますが、Kudu(Azure CLIツール)では空の結果が返されます。これは、ImageMagickが処理に必要なDLLファイルへのパスを見つけられなかったことを示します。

私の場合、問題は単にAzureの構成の不足が原因でした。

  • システム環境変数%PATH%にImageMagickルートフォルダーがない
  • 環境変数の不在 "MAGICK_HOME"(ImageMagickインストールディレクトリのルートフォルダに設定)
  • 環境変数が存在しない "MAGICK_CODER_MODULE_PATH"(上記のフォルダーに設定+/modules/coders)

注:Azureでこの問題が発生している場合は、XDTトランスフォームを使用して環境変数を追加する方法を説明する this SO answer 。

1
SND

単一引用符が欠落しているのと同じエラーを受け取りました。

convert -drawで画像を引用符で結合する場合、提供される画像は引用符で囲む必要があります。

この画像形式のデコードデリゲートなし `'@ error/constitute.c/ReadImage/504

convert myBackground.png -font Arial -pointsize 20 \
  -draw "gravity west image Over 50,80,20,20 'myForeground.png'" \
  # -----------------------------------------^ added missing single quotes
  -flatten ./finalImage.jpg                  

myForegroundを囲む単一引用符で追加すると、問題はなくなりました。なんてひどいエラーでしょう!

1
lfender6445

別のImagemagickコマンドは次のとおりです。

convert pic1-jpg.jpg[805x972+34+94] pic1-jpg-crop.jpg

または前述のとおり

convert pic1-jpg.jpg -crop 805x972+34+94 +repage pic1-jpg-crop.jpg

https://www.imagemagick.org/script/command-line-processing.php のインライン画像クロップを参照してください

一般的に、読みやすくするために、幅と高さの間にX(大文字)ではなくx(小文字)を使用することを好みます。しかし、どちらも機能します。

0
fmw42

また、異なる色空間プロファイルを適用した変換操作で、今日この問題と戦わなければなりませんでした。

Imagickのconvertコマンドは、プロファイルのファイル名のファイル拡張子の影響を受けやすいようです。私の場合、それはサフィックスのない一時ファイルで、質問のタイトルから同じエラーメッセージをトリガーしました

convert infile.jpg -profile /tmp/profile-without-suffix outfile.jpg

プロファイルファイル名に正しいサフィックスを追加すると、問題が修正されます。

(ICC形式を想定)

convert infile.jpg -profile /tmp/profile-without-suffix.icc outfile.jpg
0
tiguchi