問題:ImageMagick変換は画像をトリミングできません。画像タイプが認識されないようです。
私が試したもの:
私はオンラインで検索しましたが、似たような問題をいくつか見ましたが、私は見ていません。私は彼らの解決策を試みました
私は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を少ししか知りません)
ありがとうございました!
brew remove imagemagick //to delete current version
brew install imagemagick --build-from-source
macで私のためにそれを修正しました
さて、いじくり回して解決策を見つけたので、この問題に遭遇する可能性のある他の人のためにここに投稿しています:
どうやら、これは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セントを投じました。ローカルマシンでImageMagickコマンドを実行しても問題はありませんでしたが、Azure Cloudで実行されているTomcatサーバーからコマンドを実行したときにOPが述べたエラーメッセージが表示されました。
次のコマンドを実行して原因を特定できました。
convert -list format
ローカルマシンでは、サポートされているすべての形式の非常に長いリストが返されますが、Kudu(Azure CLIツール)では空の結果が返されます。これは、ImageMagickが処理に必要なDLLファイルへのパスを見つけられなかったことを示します。
私の場合、問題は単にAzureの構成の不足が原因でした。
注:Azureでこの問題が発生している場合は、XDTトランスフォームを使用して環境変数を追加する方法を説明する this SO answer 。
単一引用符が欠落しているのと同じエラーを受け取りました。
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
を囲む単一引用符で追加すると、問題はなくなりました。なんてひどいエラーでしょう!
別の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(小文字)を使用することを好みます。しかし、どちらも機能します。
また、異なる色空間プロファイルを適用した変換操作で、今日この問題と戦わなければなりませんでした。
Imagickのconvertコマンドは、プロファイルのファイル名のファイル拡張子の影響を受けやすいようです。私の場合、それはサフィックスのない一時ファイルで、質問のタイトルから同じエラーメッセージをトリガーしました
convert infile.jpg -profile /tmp/profile-without-suffix outfile.jpg
プロファイルファイル名に正しいサフィックスを追加すると、問題が修正されます。
(ICC形式を想定)
convert infile.jpg -profile /tmp/profile-without-suffix.icc outfile.jpg