问题: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
我明白了:
转换:无法打开图像`805X972 + 34 + 94':没有这样的文件或目录@ error / blob.c / OpenBlob / 2702。
convert:没有用于此图像格式的解码委托`'@ error / construct.c / ReadImage / 504。
没有解码委托给这个图像格式''@ error / construct.c / ReadImage / 504
在这个问题的其他帖子中,人们得到了
为此图像格式“PNG”转换无解码委托
或者类似(除了图像类型或文件名和图像类型)
但是,我对图像文件类型没有任何说明......
我还没有尝试卸载ImageMagick,然后从源手动安装它,因为我对此并不十分有信心......(此解决方案显示:https://stackoverflow.com/a/34633084/5398660)
有谁知道可能会发生什么?
另外,任何人都可以帮我解释@ error / construct.c / ReadImage / 504部分吗?我正在查看constitute.c的代码,但我不确定我是否可以从中获取有用的信息来解决我的问题(我只知道一点C)
谢谢!
brew remove imagemagick //to delete current version
brew install imagemagick --build-from-source
在mac上为我修好了
投入我的两分钱,因为我过去几天也一直在努力解决这个问题。我在本地计算机上运行ImageMagick命令没有问题,但是当我从运行在Azure Cloud上的Tomcat服务器运行命令时,得到了OP提到的错误消息。
我可以通过运行以下命令来确定原因:
convert -list format
在我的本地计算机上,它将返回所有支持格式的相当长的列表,而在Kudu(Azure CLI工具)上,它将返回空结果。这表明ImageMagick没有找到处理所需的DLL文件的路径。
就我而言,问题只是由Azure上缺少配置引起的:
注意:对于在Azure上也遇到此问题的人,您可以查看this SO答案,该答案解释了如何使用XDT Transform添加环境变量。
好吧,随着游戏,我找到了解决方案,我在这里发布给其他可能遇到这个问题的人:
显然,这不是/不再是我使用ImageMagick转换裁剪图像的方式。即使这个用法显示here它对我使用El Capitan不起作用(也许它是操作系统?)。
而不是使用
转换img.png 805X972 + 34 + 94 img-crop.png
正确的命令,有效的是:
转换image.png -crop 805X972 + 34 + 94 image-crop.png
也就是说,命令是:
转换image.ext -crop heightXwidth + positionX + positionY * imagecropped.ext
更多可以找到here。从ImageMagick页面上的描述我很困惑他们转换玫瑰的例子:-crop但你可以按照我上面提到的方式使用它并且它工作正常。
我因错过一些单引号而收到同样的错误。
将图像与convert -draw与引号组合时,提供的图像必须用引号括起来。
没有这种图像格式的解码委托`'@ error / construct.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
对我来说(在Mac上使用Imagick和CraftCMS)我不得不用pecl uninstall imagick
和pecl install imagick
重新安装Imagick(然后用sudo apachectl -k restart
重新启动Apache)。我必须运行brew upgrade
并得到一个更新版本的ImageMagick,这导致Imagick发现类似的NoDecodeDelegateForThisImageFormat 'JPEG' @ error/constitute.c/ReadImage/556
错误。