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

ImageMagick介绍

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

ImageMagick快速入门

安装ImageMagick

官网下载相应的安装包。

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

配置环境变量

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

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

使用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

在Java中使用ImageMagick

开始前请先确认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)

运行以下代码可以将图片顺时针旋转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度。

参考资料

关键词

Java 图片处理 Java 图片处理解决方案 Java 图片加水印 Java 图片圆角 Java 图片裁切 Java 图片等比缩小 ImageMagick GraphicsMagick 区别 ImageMagick 旋转

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

最新文章

  1. sqlserver Between And的问题
  2. 培训第五天---JS
  3. CodeForces 742A Arpa’s hard exam and Mehrdad’s naive cheat
  4. ASP.NET点击按钮弹出确认对话框方法
  5. iOS app上传错误集锦(转载)
  6. cluster,network
  7. 记一个python+sqlalchemy+tornado的一个高并发下,产生重复记录的bug
  8. [Asp.net MVC]Asp.net MVC5系列——Razor语法
  9. 点击UITableviewCell展开收缩
  10. js中的preventDefault和stopPropagation
  11. 最小生成树------Kruskal算法
  12. Android Xlistview的源码浅度分析 监听ListView上下滑动 以及是否到顶和底部
  13. BZOJ4627 前缀和 + 权值线段树
  14. Rpgmakermv(16) YEP MainmenuManager
  15. Python 基础 Python是什么
  16. 4. Father&#39;s Impact on a Child&#39;s Language Development 父亲对孩子语言发展的影响
  17. 2018.09.15 poj1734Sightseeing trip(floyd求最小环)
  18. 牛客多校第四场 J.Hash Function(线段树优化建图+拓扑排序)
  19. Python概念-反射之文化底蕴版:反正射了
  20. [转]在C#程序设计中使用Win32类库

热门文章

  1. css 定位属性position的使用方法实例-----一个层叠窗口
  2. 机器学习之支持向量机(SVM)
  3. SSO(单点登录)与旅游年卡
  4. Python运维开发基础-概述-hello world
  5. 【转载】CANoe 入门 Step by step系列(三)简单例子的剖析
  6. windows环境下,anoconnda安装tensorflow
  7. android6.0动态权限处理&lt;一&gt;
  8. 新一代开源Android渠道包生成工具Walle
  9. tensorflow tanh应用
  10. (转)Java里的堆(heap)栈(stack)和方法区(method)(精华帖,多读读)