在使用Sierra (beta)的ImageMagick时出现“找不到图像”的错误。

15
我正在尝试在iOS应用程序的appIcon上添加水印。为此,我遵循[Ray][1]的博客,并使用[这里][2]的二进制发行版安装了ImageMagick。我还使用sudo nano / etc / paths添加了/bin/lib到我的路径中,看起来convert命令正在工作。 问题陈述: 当我使用教程中的convert命令时,我收到以下错误
dyld: Library not loaded: /ImageMagick-7.0.1/lib/libMagickCore-7.Q16HDRI.0.dylib
  Referenced from: /Users/Username/Library/ImageMagick-7.0.1/bin/convert
  Reason: image not found
Abort trap: 6
即使图片已经存在,但错误显示“未找到图片”。社区有什么想法吗? [1]: https://www.raywenderlich.com/1716-how-to-change-your-app-icon-at-build-time [2]: https://www.imagemagick.org/script/download.php#macosx


似乎需要定义 DYLD_LIBRARY_PATH - emcconville
1
在我的系统上,我有DYLD_LIBRARY_PATH,但我仍然收到错误信息。 - William Jockusch
3个回答

18

我曾经遇到相同的问题。解决方法是从$PATH中删除导致问题的之前的安装文件,然后重新安装:

brew update && brew upgrade
brew remove imagemagick
brew install imagemagick

然后当我运行时:

which convert

我终于得到了brew版本:

/usr/local/bin/convert

当我按照教程运行命令时:

convert AppIcon60x60@2x.png -fill white -font Times-Bold -pointsize 18 -gravity south -annotate 0 "Hello World" test.png

我得到了“Hello World”图像。


3

更新

我已经检查了您获取包裹的页面,看起来我的假设是正确的——您缺少一个路径变量MAGICK_HOME。幸运的是,它似乎很容易修正。

您需要获取ImageMagick所在目录的绝对路径。如果情况紧急,您可以在任何地方搜索它——从命令行运行以下命令:

find / -type d -name "ImageMagick-7.0.3" 2>/dev/null

它应该只返回一个ImageMagick目录(除非您在不同的位置安装了多个版本,这种情况下您需要确定哪个是“正确”的软件包)。
作为另一种选择,如果您执行以下命令:
which convert

它应该告诉您 convert 可执行文件的完整路径,该文件应该位于 ImageMagick 安装的 bin 子目录中。
假设它说目录是:
/Users/lserni/Desktop/test/ImageMagick-7.0.3

然后,在终端中使用ImageMagick之前,您需要输入这些命令:
export HOME=/Users/lserni/Desktop/test
export MAGICK_HOME="$HOME/ImageMagick-7.0.3"
export DYLD_LIBRARY_PATH="$MAGICK_HOME/lib/"

现在您可以尝试使用ImageMagick:
convert logo: logo.gif
identify logo.gif

它应该像这样给出一些东西:
logo.gif GIF 640x480 640x480+0+0 8-bit sRGB 256c 28.6KB ...

原始答案

dyld:库未加载:/ImageMagick-7.0.1/lib/libMagickCore-7.Q16HDRI.0.dylib 原因:找不到图像

有几个可能的原因。我认为最有可能的一个是该库实际上不存在于“那里”——“那里”指的是“卷根目录”中名为“ImageMagick-7.0.1”的目录。该库可能在/usr/lib/opt中,但是上面的错误表明它正在寻找/ImageMagick-7.0.1中的库。

尝试在终端中输入以下内容以查询该路径:

ls -la /ImageMagick-7.0.1/lib/libMagickCore-7.Q16HDRI.0.dylib

我找到了一个参考资料,暗示你可以重定向一个可执行文件的 ldpath,如果它包含错误的路径,但我还没有尝试过:
install_name_tool -change /ImageMagick-7.0.1/lib/libMagickCore-7.Q16HDRI.0.dylib /usr/local/lib/libMagickCore-7.Q16HDRI.0.dylib /usr/local/bin/NameOfImageMagickBinaryYou'ReCalling

二进制文件可能位于/usr/local/bin/convert。...而且,可能还有其他具有相同问题的库和IM二进制文件。另一个可能性是,库存在,但它正在尝试加载其他不存在的库。libPNG、JPEGlib、libTIFF等都是可能的候选项。虽然您可以使用诸如strace之类的工具深入了解此问题,但最好从开始检查安装情况。最后,您可能会遇到权限错误,无论是在dylib中还是在导致该dylib的路径中。如果您以root身份安装(或安装运行为root),则库目录将创建更安全的权限(例如750而不是755),然后您将以不同和/或权限较低的用户/组运行应用程序。如果您通过Homebrew安装了ImageMagick,请还要检查HB的配置路径。您的症状让我想起了如果安装脚本以--prefix = 而不是--prefix=/usr/local运行,则会发生什么情况。

2

在我看来,在OS X上安装、配置和卸载ImageMagick和许多其他软件包的最简单方法是使用homebrew

步骤1

访问homebrew网站,将一行代码复制并粘贴到终端中运行。

步骤2

现在,决定要搜索和安装哪个软件包 - ImageMagickRedispandocgawk等,并使用以下任一命令查找软件包:

brew search magick
brew search redis
brew search gawk

第三步

现在检查你想要哪些选项用于ImageMagick

brew options imagemagick

样例输出

--with-fftw
    Compile with FFTW support
--with-fontconfig
    Build with fontconfig support
--with-ghostscript
    Build with ghostscript support
--with-hdri
    Compile with HDRI support
--with-liblqr
    Build with liblqr support
--with-librsvg
    Build with librsvg support
--with-libwmf
    Build with libwmf support
--with-little-cms
    Build with little-cms support
--with-little-cms2
    Build with little-cms2 support
--with-opencl
    Compile with OpenCL support
--with-openexr
    Build with openexr support
--with-openjpeg
    Build with openjpeg support
--with-openmp
    Compile with OpenMP support
--with-pango
    Build with pango support
--with-perl
    Compile with PerlMagick
--with-quantum-depth-16
    Compile with a quantum depth of 16 bit
--with-quantum-depth-32
    Compile with a quantum depth of 32 bit
--with-quantum-depth-8
    Compile with a quantum depth of 8 bit
--with-webp
    Build with webp support
--with-x11
    Build with x11 support
--with-zero-configuration
    Disables depending on XML configuration files
--without-freetype
    Build without freetype support
--without-jpeg
    Build without jpeg support
--without-libpng
    Build without libpng support
--without-libtiff
    Build without libtiff support
--without-magick-plus-plus
    disable build/install of Magick++
--without-modules
    Disable support for dynamically loadable modules
--without-threads
    Disable threads support
--HEAD
    Install HEAD version

第四步

按照您选择的选项进行安装:

brew install imagemagick --with-fftw --with-openmp --with-pango

接着一切就准备就绪了。

更新和升级软件包

如果您想要更新 homebrew 并更新所有软件包,请执行以下操作:

brew update && brew upgrade

卸载软件包

如果你想卸载 ImageMagick,请使用以下命令:

brew rm imagemagick

重新安装具有不同选项的软件包

如果您想重新安装 ImageMagick 并选择量子深度为 32 (Q32),请使用以下命令:

brew reinstall imagemagick --with-quantum-depth-32

故障排除

如果您在使用homebrew时出现任何问题,只需向“好医生”询问问题,您将得到一份有关所有不良情况的报告:

brew doctor

整洁的软件包

我最喜欢的一些软件包是:

ack,ansiweather,arpack,astyle,atk,atkmm,autoconf,basex,bash,boost,c-ares,cairo,cairomm,cimg,cmake,coreutils,cpanminus,curl,dbus,dcraw,doxygen,eigen,epstool,exact-image,exiftool,exiv2,faac,feh,ffmpeg,fftw,findutils,flac,fltk,fontconfig,fortune,freeimage,freetype,fswatch,gawk,gcc,gd,gdb,gdbm,gdk-pixbuf,geoip,gettext,ghostscript,giflib,gifsicle,gl2ps,glib,glibmm,glpk,gmp,gnu-sed,gnuplot,gnutls,gobject-introspection,graphicsmagick,grep,gsettings-desktop-schemas,gtk+3,harfbuzz,hdf5,hicolor-icon-theme,hiredis,icu4c,ilmbase,imagemagick,imlib2,isl,jasper,jbig2dec,jhead,jpeg,jpeg-turbo,jq,lame,leptonica,lftp,libagg,libbtbb,libcroco,libepoxy,libevent,libexif,libffi,libgcrypt,libgpg-error,libgsf,libmpc,libogg,libpng,librsvg,libsigc++,libsvg,libsvg-cairo,libtasn1,libtiff,libtool,libusb,libusb-compat,libvo-aacenc,libvorbis,libxml2,libyaml,lighttpd,little-cms,little-cms2,llvm,lua,lynx,lz4,mad,matplotlib,metis,mpfr,nanomsg,net-snmp,netpbm,nettle,ngrep,nmap,node,numpy,octave,oniguruma,opencv3,openexr,openjpeg,openjpeg21,openssl,orc,p7zip,pandoc,pango,pangomm,parallel,pcre,pdfgrep,perl,perlmagick,php56,php56-amqp,php56-imagick,pixman,pkg-config,platypus,plotutils,pngcheck,pngcrush,pngquant,poppler,popt,potrace,pstoedit,py2cairo,pygobject3,pyqt,pyqt5,python,python3,qhull,qrupdate,qscintilla2,qt,qt5,rabbitmq-c,readline,redis,rename,rocksdb,ruby,sane-backends,sdl,shared-mime-info,sip,smartmontools,snappy,sox,sqlite,sqliteman,suite-sparse,suite-sparse421,svg2png,swig,szip,tag,tbb,tesseract,tmux,transfig,tree,ufraw,unixodbc,utf8proc,veclibfort,vips,webkit2png,webp,wget,wireshark,x264,xmlstarlet,xvid,xz,youtube-dl,bar


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接