使用ImageMagick

目录

1 ImageMagick基本说明

1.1 获取ImageMagick

2 移植ImageMagick

2.1 在Ubuntu 使用ImageMagick命令行旋转图片

2.2 在Ubuntu使用ImageMagick API旋转图片

2.3 在arm linux(hi3518ev300)使用ImageMagick

3 命令行的其他使用

3.1 调节亮度饱和度


1 ImageMagick基本说明

ImageMagick是一款强大且能处理不同格式的图像的工具,同时也是开源界低调的存在,深藏功与名。支持Windows和Linux。

1.1 获取ImageMagick

可以从官网获取获取,也可以从百度网盘获取,

链接:https://pan.baidu.com/s/1t1xAwYm04Lp3YdE02eoF5Q

提取码:0jk8

2 移植ImageMagick

2.1 在Ubuntu 使用ImageMagick命令行旋转图片

将压缩包解压,tar xzf ImageMagick-6.9.10-81.tar.gz,进入解压之后的目录,./configure --with-magick-plus-plus=no(可以在配置打印的最后看到依赖库有zlib、gomp、m、pthread等),make,如果遇到如下错误:

则在./magick/magick-type.h的文件开头加入#include ,再次make即可,编译成功之后执行make install,安装成功之后即可使用ImageMagick提供的命令,比如convert,在执行convert时可能遇到如下错误:

convert: error while loading shared libraries: libMagickCore-6.Q16.so.6: cannot open shared object file: No such file or directory

可以参考https://blog.csdn.net/qc530167365/article/details/91491851,

echo "/usr/local/lib" >> /etc/ld.so.conf.d/x86_64-linux-gnu.conf

ldconfig

此时可以通过命令convert旋转BMP和PGM图片了,网盘中pic1.tar.gz包含了示例图片,

convert -rotate 45 8_.bmp 8_45.bmp

convert -rotate 45 24_.bmp 24_45.bmp

convert -rotate 45 8_.pgm 8_45.pgm

2.2 在Ubuntu使用ImageMagick API旋转图片

通过查看makefile得知,convert可执行程序由utilities/convert.c编译得到。

gcc convert.c  /usr/local/lib/libMagickWand-6.Q16.a /usr/local/lib/libMagickCore-6.Q16.a  -o convert_2 -I/home/lijun/ImageMagick-6.9.10-81/ -lz -lm -lpthread -lgomp

可以得到可执行程序convert_2,convert_2.c由convert.c修改之后得到,由此可以通过应用程序调用API执行图片旋转等功能。网盘中包含了convert.c和convert_2.c。

gcc convert_2.c  /usr/local/lib/libMagickWand-6.Q16.a /usr/local/lib/libMagickCore-6.Q16.a  -o convert_2 -I/home/lijun/ImageMagick-6.9.10-81/ -lz -lm -lpthread -lgomp

2.3 在arm linux(hi3518ev300)使用ImageMagick

ImageMagick的部分组件依赖gomp库,从官网或者网盘下载gomp库的源代码,解压(mkdir libgpmp_arm,unzip libgomp-master.zip -d libgomp_arm),进入解压之后的目录,修改makefile,如下图所示:

make,即可生成libgomp.a文件(位于libgomp-master/src/libgomp/build/.libs/)

ImageMagick还依赖libz,下面省略了libz库的移植过程(笔者使用了zlib-1.2.11),直接说明ImageMagick的移植过程,

mkdir ImageMagick_arm

tar xzf ImageMagick-6.9.10-81.tar.gz -C ImageMagick_arm

cd ImageMagick_arm/ImageMagick-6.9.10-81/

./configure --with-magick-plus-plus=no --prefix=`pwd` CC=arm-himix100-linux-gcc --host=arm

make,跟linux PC的移植一样,会遇到如下错误:

在./magick/magick-type.h的文件开头加入#include ,再次make即可,此时生成./magick/.libs/libMagickCore-6.Q16.a、./wand/.libs/libMagickWand-6.Q16.a,但是不会自动生成convert等可执行程序。

参考linux PC的移植过程,以生成convert可执行程序为例,

arm-himix100-linux-gcc convert_2.c  /home/lijun/ImageMagick_arm/ImageMagick-6.9.10-81/./wand/.libs/libMagickWand-6.Q16.a /home/lijun/ImageMagick_arm/ImageMagick-6.9.10-81/./magick/.libs/libMagickCore-6.Q16.a  /home/lijun/libgomp_arm/libgomp-master/src/libgomp/build/.libs/libgomp.a  -o convert_2 -I/home/lijun/ImageMagick_arm/ImageMagick-6.9.10-81  -lm -lpthread -L/home/lijun/zlib_install/lib -lz

经过实测,在hi3518ev300旋转一个768*432的PGM图片45度,需要13秒左右的时间,而在Ubuntu server 1604(64bit)上只要100ms左右。

3 命令行的其他使用

3.1 调节亮度饱和度

-modulate brightness[,saturation,hue]

比如将2.jpg的图像亮度调为2倍,饱和度不变,将调节之后的图片保存到2_1.jpg中,convert.exe 2.jpg -modulate 200 2_1.jpg

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ta是一个搬运工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值