[ImageMagick 学习] ImageMagick学习笔记

IM 用C写了一系列的command,然后由这些command 配以各种参数,搭配出种类繁多的图像处理特效。


这样做的好处是:1)层次分明;2)上层逻辑实现简单快速。

坏处是:1)用shell脚本写的特效,不方便由C代码调用;2)Shell 脚本执行效率没有C原生的快


如果对某种特效,需要频繁调用,这时就要考虑将shell 脚本由C/C++ 重写了。以下将记录这方面的学习笔记。


曾经听说过Lua 脚本和C 代码关系比较密切,考虑将shell 脚本转成Lua脚本,然后将Lua脚本“自动转成C 代码”,后来发现,这是不可能的,太天真了!并且,如果由C 调用Lua 脚本,并且频繁跨越C/Lua 边界的话,效率也很低下。于是放弃Lua 思路,只有一条路:手工将Shell 脚本转成C 代码。于是要搞清楚以下问题:

  1. shell脚本中大量使用的convert 命令是怎么生成的,代码和Makefile 在哪?我们自己的C 代码该怎样模拟调用conert 命令?
  2. 对于众多的shell 脚本,怎样用一个统一的方法实现Shell 到C 的转换?
  3. 这些Shell 脚本是否具备“Linux 命令通道”的功能,即几个脚本串联,前一个的输出是后一个的输入?这样的串联用代码怎样高效实现?
  4. 怎样实现跨平台?

观察IM 的代码和安装后的文件,有以下发现:

1)貌似convert 命令是由wand/convert.h, wand/convert.c 生成的

2)安装了IM 之后,在 /usr/local/lib 中会有以下和IM 相关的库文件:

-rw-r--r--. 1 root root  4561412 Apr 21 20:00 libMagick++-6.Q16.a
-rwxr-xr-x. 1 root root     1123 Apr 21 20:00 libMagick++-6.Q16.la
lrwxrwxrwx. 1 root root       26 Apr 21 20:00 libMagick++-6.Q16.so -> libMagick++-6.Q16.so.1.0.0
lrwxrwxrwx. 1 root root       26 Apr 21 20:00 libMagick++-6.Q16.so.1 -> libMagick++-6.Q16.so.1.0.0
-rwxr-xr-x. 1 root root  2134069 Apr 21 20:00 libMagick++-6.Q16.so.1.0.0
-rw-r--r--. 1 root root 11540026 Apr 21 20:00 libMagickCore-6.Q16.a
-rwxr-xr-x. 1 root root     1075 Apr 21 20:00 libMagickCore-6.Q16.la
lrwxrwxrwx. 1 root root       28 Apr 21 20:00 libMagickCore-6.Q16.so -> libMagickCore-6.Q16.so.1.0.0
lrwxrwxrwx. 1 root root       28 Apr 21 20:00 libMagickCore-6.Q16.so.1 -> libMagickCore-6.Q16.so.1.0.0
-rwxr-xr-x. 1 root root  6309290 Apr 21 20:00 libMagickCore-6.Q16.so.1.0.0
-rw-r--r--. 1 root root  4
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值