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 旋转

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏潇涧技术专栏

Mou and StackEdit and Mathjax

本文记录使用Mou和Stackedit中出现的一些问题,使其能够正常渲染带数学公式的文章

11510
来自专栏macOS 开发学习

Mac OSX 开发基础控件学习之 NSOutlineView

在开发基于osx的Application的过程中,当我们需要显示一组列表结构的数据时,比较容易想到的控件是NSTableView;但如果你显示的数据有层级结构...

26020
来自专栏deepcc

amcharts 网页绘图插件

41790
来自专栏自动化测试实战

HTML第四课——Chrome浏览器F12的使用

13230
来自专栏大内老A

Ajax请求过程中显示“进度”的简单实现

Ajax在Web应用中使用得越来越频繁。在进行Ajax调用过程中一般都具有这样的做法:显示一个GIF图片动画表明后台正在工作,同时阻止用户操作本页面(比如Aja...

23980
来自专栏Small Code

【Python】解决使用 plt.savefig 保存图片时一片空白

更新 这里我会列出对本文的更新。 2017 年 9 月 28 日:修正几处错字,优化排版。 问题 当使用如下代码保存使用 plt.savefig 保存生成的图片...

93790
来自专栏性能与架构

JS引发页面重排重绘的代价

示例 目标是修改div内容,3种实现方式,看下每种方式的执行时间 <html> <body> <div id="myDiv1"></div> <div id="...

38160
来自专栏夏时

使用PHP抓取Bing每日图像并为己所用

23930
来自专栏晨星先生的自留地

看秦时明月引起的一次爬虫

23630
来自专栏生信宝典

Cytoscape制作带bar图和pie图节点的网络图

本教程旨在告诉大家如何使用cytoscape根据Node信息表格制作带有barplot信息节点的网络图。以安装文件夹下的样例数据为例。

36630

扫码关注云+社区

领取腾讯云代金券