在 Sierra(测试版)上使用 ImageMagick 时出现“找不到图像”

Posted

技术标签:

【中文标题】在 Sierra(测试版)上使用 ImageMagick 时出现“找不到图像”【英文标题】:"Image not found" when using ImageMagick on Sierra (beta) 【发布时间】:2017-01-06 07:25:55 【问题描述】:

我正在尝试在 ios 应用的 appIcon 上添加水印。为此,我正在关注 [Ray's][1] 的博客,并使用 [here][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 需要定义。 在我的系统上,我有 DYLD_LIBRARY_PATH,但我仍然收到错误。 【参考方案1】:

我遇到了同样的问题。对我有用的是从 $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 图像。

【讨论】:

【参考方案2】:

更新

我检查了您从中获取包裹的页面,看起来我的假设是正确的 - 您缺少路径变量 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 的 path 中出现权限错误。如果您以 root 身份安装(或以 root 身份运行安装),则可能会发生这种情况,使用更安全的权限创建库目录(例如 750 而不是 755),然后您以不同和/或权限较低的用户身份运行应用程序/组。

如果您通过 Homebrew 安装 ImageMagick,请检查 HB 的配置路径。您的症状让我非常想起如果安装脚本使用--prefix= 而不是--prefix=/usr/local 运行会发生什么。

【讨论】:

【参考方案3】:

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

步骤 1

转到homebrew website 并复制一行并将其粘贴到您的终端并运行它。

第二步

现在,决定你要搜索和安装什么包 - 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

使用不同的选项重新安装软件包

如果您想重新安装量子深度为 32 (Q32) 的 ImageMagick,例如,使用:

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 、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 -主题,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 错误, 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, l z4, 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,并行,pcre,pdfgrep,perl,perlmagick,php56,php56-amqp,php56-imagick,pixman,pkg-config,鸭嘴兽,plotutils,pngcheck,pngcrush,pngquant,poppler,popt,potrace,pstoedit,py2cairo,pygobject3, pyqt,pyqt5,python,python3,qhull,qrupdate,qscintilla2,qt,qt5,rabbitmq-c,readline,redis,重命名,rocksdb,ruby,sane-backends,sdl,shared-mime-info,sip,smartmontools,snappy, sox,sqlite,sqliteman,套件稀疏,套件稀疏421,svg2png,swig,szip,标签,tbb,tesseract,tmux,transfig,树,ufraw,unixodbc,utf8proc,veclibfort,vips,webkit2png,webp,wget,wireshark, x264, xmlstarlet, xvid, xz, youtube-dl, 酒吧

【讨论】:

以上是关于在 Sierra(测试版)上使用 ImageMagick 时出现“找不到图像”的主要内容,如果未能解决你的问题,请参考以下文章

sh 将MAMP 4升级到Mysql 5.7.18(在Sierra测试中)

markdown 使用Homebrew在Sierra上安装MySQL

Jenkins 无法在 macOS 10.12 (Sierra) 上启动

在 macOS Sierra 上安装 jekyll 失败

如何以编程方式在 macOS Sierra/High Sierra 上创建 PPTP *** 连接?

如何在 OS Sierra 上卸载 postgres