【Mac】python调用ImageMagick

ImageMagick

起因

在我浅薄的认知里,命令行工具使用非常方便,单文件拷贝到任意一个地方,只要输入它的地址就可以直接调用了。如果这个命令行工具经常使用就把它所在地址写到环境变量里,然后只要输入它的文件名就可以直接快速调用了。
然而ImageMagick有点不一样,在mac上如果直接调用会提示“dyld: Library not loaded”,常用的指令都是convert,而不是我以为的ImageMagick,不过想想也是,convert敲起来更方便也更好记忆。

直接调用结果

hf-home:~ hf$ /Users/hf/mytool/tool/ImageMagick/convert ; exit;
dyld: Library not loaded: /ImageMagick-7.0.8/lib/libMagickCore-7.Q16HDRI.6.dylib
  Referenced from: /Users/hf/mytool/tool/ImageMagick/convert
  Reason: image not found
Abort trap: 6
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.
Deleting expired sessions...36 completed.

安装ImageMagick

  1. 官网下载安装包,目前最新是“ImageMagick-x86_64-apple-darwin19.3.0.tar.gz”
  2. 解压后得到 “ImageMagick-7.0.10”文件夹,将此文件夹拷贝到用户目录下
    拷贝至用户目录下
  3. 配置环境变量
    终端运行下面命令可以快速配置
echo 'export MAGICK_HOME="$HOME/ImageMagick-7.0.10"' >> ~/.bash_profile
echo 'export PATH="$MAGICK_HOME/bin:$PATH"' >> ~/.bash_profile
echo 'export DYLD_LIBRARY_PATH="$MAGICK_HOME/lib/"' >> ~/.bash_profile
source ~/.bash_profile

手动配置 或者 shell不是bash可以将下面的内容配置到环境变量中

export MAGICK_HOME="$HOME/ImageMagick-7.0.10"
export PATH="$MAGICK_HOME/bin:$PATH"
export DYLD_LIBRARY_PATH="$MAGICK_HOME/lib/"
  1. 配置完成后,输入命令进行测试
hf-home:~ hf$ identify logo.gif
# 执行成功的结果显示
logo.gif GIF 640x480 640x480+0+0 8-bit sRGB 256c 28576B 0.000u 0:00.000

运行环境分析

还是念念不忘“绿化”的事情,因为自己在用python写工具,有时要分享给朋友和同事,配置环境变量对他们来说有点难。
bin目录下可以找到“convert”、“magick”等命令行执行文件,lib目录下是可执行文件的支持库文件,配置环境变量的时候要添加的3行,就是让执行文件能找到支持库文件。
bin目录 和 lib目录

python调用代码

python中可以通过 os.environ 方法来指定运行时的环境变量

import os
from subprocess import getoutput

# '~/ImageMagick-7.0.10'
# 其中的“~”指代当前用户的用户目录,这种方式在别的电脑也能识别正确
magick_home = os.path.expanduser('~/ImageMagick-7.0.10')

# 在对应的环境变量内容之前,插入相应的路径
e = os.environ
k, s = 'MAGICK_HOME', magick_home
e[k] = "%s:%s" % (s, e[k]) if k in e else s

k, s = 'PATH', "%s/bin" % magick_home
e[k] = "%s:%s" % (s, e[k]) if k in e else s

k, s = 'DYLD_LIBRARY_PATH', "%s/lib" % magick_home
e[k] = "%s:%s" % (s, e[k]) if k in e else s

convert_path = "%s/bin/convert" % magick_home
result = getoutput("%s -version" % convert_path)
print(result)


# 查询 convert 版本信息
# convert -version
# 
# 执行结果:
# Version: ImageMagick 7.0.10-7 Q16 x86_64 2020-04-10 https://imagemagick.org
# Copyright: © 1999-2020 ImageMagick Studio LLC
# License: https://imagemagick.org/script/license.php
# Features: Cipher DPC HDRI 
# Delegates (built-in): bzlib freetype jng jpeg lcms png raw tiff webp xml zlib

执行结果截图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值