当前位置: 首页 > 知识库问答 >
问题:

ImageMagick:此图像格式`'没有解码委托@错误/构成。c/ReadImage/504

金昌胤
2023-03-14

问题:ImageMagick convert无法裁剪图像。它似乎无法识别图像类型?

我所尝试的:

我在网上到处搜索,看到了几个类似的问题,但我没有看到。我尝试了他们的解决方案,包括

  • 通过brew卸载和重新安装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。

转换:此图像格式没有解码委托”@error/成分. c/ReadImage/504。

此图像格式“%”没有解码委托@错误/构成。c/ReadImage/504

在关于这个问题的其他帖子中,人们

转换此图像格式“PNG”的无解码委托

或类似文件(除了其图像类型或文件名和图像类型)

然而,我的没有说任何关于图像文件类型的事情。。。

我没有尝试卸载ImageMagick然后从源手动安装它,因为我不是很有信心这样做...(此解决方案显示:https://stackoverflow.com/a/34633084/5398660)

有人知道可能会发生什么吗?

还有,谁能帮我解释一下@错误/构成。c/ReadImage/504零件?我正在查看构成的代码。但我不确定我是否能从中获得有用的信息来解决我的问题(我只懂一点c)

谢谢你!

共有3个答案

冯阳云
2023-03-14

在过去的几天里,我也一直在努力解决这个问题,所以我把我的两分钱投了进去。我在本地机器上运行ImageMagick命令没有问题,但当我从运行在Azure云上的Tomcat服务器上运行该命令时,收到了OP提到的错误消息。

我可以通过运行以下命令来确定原因:

convert -list format

在我的本地机器上,它会返回相当长的所有支持格式列表,而在Kudu(Azure CLI工具)上,它会返回一个空结果。这表明ImageMagick没有找到处理所需的DLL文件的路径。

在我的情况下,问题仅仅是由于Azure上缺少配置造成的:

  • 系统环境变量%PATH%中缺少ImageMagick根文件夹
  • 缺少环境变量MAGICK_HOME(设置为ImageMagick安装目录的根文件夹)
  • 缺少环境变量"MAGICK_CODER_MODULE_PATH"(设置为上面提到的文件夹 /modules/coders)

注意:对于在Azure上也遇到此问题的人,您可以查看此SO答案,它解释了如何使用XDT转换添加环境变量。

文增
2023-03-14

我在Ubuntu 20.04和ImageMagick上也有同样的错误。必须按照以下说明重新安装ImageMagick和所有附加组件:

#These are the steps required in order to Install ImageMagick with JPG, PNG and TIFF delegates.

sudo apt-get update 

#Install Build-Essential in order to configure and make the final Install

sudo apt-get install build-essential 

#libjpg62-dev required in order to work with basic JPG files

sudo apt-get install -y libjpeg62-dev 

#libtiff-dev is required in order to work with TIFF file format

sudo apt-get install -y libtiff-dev 

#Download ImageMagick

wget https://www.imagemagick.org/download/ImageMagick.tar.gz 

#Untar Imagemagick

tar xvzf ImageMagick.tar.gz 

#Access the working directory

cd ImageMagick/[version_number] 

#Configure and make sure to disable the "shared" option

./configure --disable-shared

#Make

sudo make

#Install

sudo make install

#Final Check

sudo make check
柯梓
2023-03-14
brew remove imagemagick //to delete current version
brew install imagemagick --build-from-source

在mac上为我修复了它

 类似资料:
  • 我试图转换图像与Imagemagick,但我得到这个错误: 转换:此图像格式没有解码委托'/tmp/magick-XXITXcTr'@宪法. c/ReadImage/503。 我正在这样做: 我有以下代表: 代表bzlib fontconfig freetype gs jpeg jng jp2 lcms openexr png rsvg tiff x11 xml wmf zlib 有人知道问题是什

  • 在linux上执行以下convert命令时,字体出现委托错误。 转换:委托库支持不内置'/usr/share/fonts/type1/gsfonts/n021003l.pfb'(Freetype)@警告/注释. c/RenderFreetype/1818。转换:没有此图像格式的解码委托PNG错误/成分. c/ReadImage/509。转换:委托库支持不内置'/usr/share/fonts/ty

  • 主要内容:声明委托,实例化委托,多播委托(合并委托)C# 中的委托(Delegate)类似于 C 或 C++ 中的函数指针,是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用。委托特别适用于实现事件和回调方法,所有的委托都派生自 System.Delegate 类。在实例化委托时,可以将委托的实例与具有相同返回值类型的方法相关联,这样就可以通过委托来调用方法。另外,使用委托还可以将方法作为参数传递给其他方法, 委托具有以下特点: 委托类似

  • 问题内容: CLLocationManager的委托方法 didChangeAuthorizationStatus和didUpdateToLocation 没有接到电话。 位置始终使用说明键已添加到info.plist中,并且在我首次启动应用程序时也收到通知。 我能够看到谷歌地图,但是我看不到当前位置,当我更改位置时,它不会更新。基本上不会调用委托方法。 //码 问题答案: 在您的代码中,您正在使

  • 本文向大家介绍C#委托delegate实例解析,包括了C#委托delegate实例解析的使用技巧和注意事项,需要的朋友参考一下 所谓c#的委托就是说把函数当参数来传递。 这个在js完全就用不着搞什么委托东西,直接转就是了。而对于C#来说则不是这样! 一个函数,如果它的参数是函数,那么是这样子写的 : 意思是说这个将被传进来的函数是一个没有return的函数,就是public void, 它需要一个

  • C# 中的委托类似于 C 或 C++ 中指向函数的指针。委托表示引用某个方法的引用类型变量,运行时可以更改引用对象。 特别地,委托可以用于处理事件或回调函数。并且,所有的委托类都是从 System.Delegate 类继承而来。 声明委托 声明委托时,需要定义能够被委托所引用的方法,任意委托可以引用与该委托拥有相同签名的方法。如: public delegate int MyDelegate (s