ImageMagick 入门教程:Java 图片处理解决方案

Posted by 陈树义 on 2017-11-23

文章首发于陈树义的博客,点击跳转到原文Java 图片处理解决方案:ImageMagick 快速入门教程

ImageMagick介绍

ImageMagick是一个免费的创建、编辑、合成图片的软件,可以实现图片切割、颜色替换、图片缩略图、图片水印等各种效果。ImageMagick是免费开源软件,支持大多数操作系统,包括Linux、Windows操作系统。ImageMagick的大多数功能的使用都来源于命令行工具

ImageMagick快速入门

安装ImageMagick

官网下载相应的安装包。

下载

在安装过程中记得勾选Install legacy utilities(e.g. convert)选项。

安装注意

配置环境变量

将ImageMagick安装目录设置到PATH系统变量中

image.png

打开命令行运行magick -help测试是否配置成功

image.png

使用ImageMagick实现旋转

ImageMagick图片处理命令的格式如下:

imagick deal_type origin_pic_path deal_param dest_pic_path
  • **deal_type:**图片处理类型。ImageMagick提供了几十种图片处理类型,包括:decorate(边框)、convert(转换)、montage(拼接)、animation(动画)等,你可以在Features and Capabilities查看更多图片处理类型。
  • **origin_pic_path:**源图片路径。
  • **deal_param:**处理参数。不同的图片处理类型有不同的处理参数。
  • **dest_pic_path:**目标图片路径。

运行下面的命令将图片顺时针旋转90度:

magick doraemon.jpg -rotate 90 doraemon_rotate.jpg

图片旋转代码

ImageMagick快速入门之图片旋转效果

在Java中使用ImageMagick

开始前请先确认JDK、Maven正确安装:

JDK、MAVEN安装确认

引入依赖

IM4Java是ImageMagick的Java API包,它将Java代码转化成对ImageMagick的命令行调用。

<dependency>
    <groupId>org.im4java</groupId>
    <artifactId>im4java</artifactId>
    <version>1.4.0</version>
</dependency>

调用IM4Java实现旋转

IM4Java的作用是将Java代码转成对ImageMagick的命令行调用,因此IM4Java API与ImageMagick的命令有一一对应的关系。

  • ImageMagick的图片处理类型(deal_type)对应xxxCmd,如:convert处理类型对应ConvertCmdmontage处理类型对应MontageCmd
  • ImageMagick的图片处理参数(deal_param)对应IMOperation方法,如:-rotate 90参数对应operation.rotate(90d)-resize 900x600参数对应operation.resize(900,600)

API和命令行参数对比

运行以下代码可以将图片顺时针旋转90度。

IMOperation operation = new IMOperation();
operation.addImage("C:\\Users\\Administrator\\Desktop\\imagemagick\\doraemon.jpg");
operation.rotate(90d);
operation.addImage("C:\\Users\\Administrator\\Desktop\\imagemagick\\doraemon_rotate.jpg");

ConvertCmd cmd = new ConvertCmd();
cmd.setSearchPath("C:\\Program Files\\ImageMagick-7.0.5-Q16");  //Windows需要设置,Linux不需要
cmd.run(operation);

运行程序后可以看到图片已经旋转90度。

ImageMagick入门旋转效果对比

参考资料

文章首发于陈树义的博客,点击跳转到原文Java 图片处理解决方案:ImageMagick 快速入门教程