ITKeyword,专注技术干货聚合推荐

注册 | 登录

GraphicsMagick+IM4JAVA图片处理

yizhaorong 分享于

2020腾讯云双十一活动,全年最低!!!(领取3500元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1073

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

推荐:java 大图片处理GraphicsMagick + im4java [缩放,旋转,裁剪]

java 大图片处理GraphicsMagick + im4java [缩放,旋转,裁剪] ImageMagick 主页:http://www.imagemagick.org/script/index.php GraphicsMagick 主页:http://www.g

本文实例是基于Windows平台

首先下载GraphicsMagick,地址:

http://sourceforge.net/projects/graphicsmagick/files/graphicsmagick-binaries/1.3.18/

和所有应用程序安装一样,直接下一步到安装完成即可。

然后下载IM4JAVA,地址:http://sourceforge.net/projects/im4java/files/im4java-1.4.0/ 

推荐:im4java+GraphicsMagick图片处理

关于graphicsmagick,可以访问其官方网站了解详情点击打开链接 ,网上称之为图片处理领域的瑞士军刀,这评价真够牛逼的! 今天试用了一下,感觉还是不错的,先下

下载后解压,复制里面的:im4java-1.4.0.jar到工程的lib里。

环境就安装完成了。下面是相关代码:

 

package com.yzr.utils;

import java.io.IOException;

import org.im4java.core.ConvertCmd;
import org.im4java.core.IM4JavaException;
import org.im4java.core.IMOperation;
import org.im4java.process.ProcessStarter;

public class PictureUtil {

	static {
		String osName = System.getProperty("os.name");
		// Windows需要进行路径的设置
		if (osName.toLowerCase().contains("windows")) {
			// 设置全局搜索路径(GraphicsMagick安装路径)
			String imPath = "D:\\Program Files (x86)\\GraphicsMagick-1.3.18-Q16";
			ProcessStarter.setGlobalSearchPath(imPath);
		}
	}

	/**
	 * 先缩放,后居中切割图片
	 * 
	 * @param srcPath
	 *            源图路径
	 * @param desPath
	 *            目标图保存路径
	 * @param rectw
	 *            待切割在宽度
	 * @param recth
	 *            待切割在高度
	 * @throws IM4JavaException
	 * @throws InterruptedException
	 * @throws IOException
	 */
	public static void cropImageCenter(final String srcPath, final String desPath, final int rectw, final int recth) throws IOException, InterruptedException, IM4JavaException {
		// create command(true表示使用GraphicsMagick,API上有说)
		ConvertCmd convert = new ConvertCmd(true);
		// create the operation, add images and operators/options
		IMOperation op = new IMOperation();
		op.addImage();
		// "^"代表缩放后裁剪,这个不知道在文档中的哪里。用的别人的代码
		op.resize(rectw, recth, '^').gravity("center").extent(rectw, recth);
		op.addImage();
		convert.run(op, srcPath, desPath);
	}

	/**
	 * 先缩放,后填充背景色,并加水印
	 * 
	 * @param srcPath
	 *            源图路径
	 * @param desPath
	 *            目标图路径
	 * @param rectw
	 *            目标图的宽度
	 * @param recth
	 *            目标图的高度
	 * @param bgColor
	 *            背景颜色
	 * @param text
	 *            水印文本
	 * @throws IOException
	 * @throws InterruptedException
	 * @throws IM4JavaException
	 */
	public static void cropImageCenter(final String srcPath, final String desPath, final int rectw, final int recth, final String bgColor, final String text) throws IOException, InterruptedException, IM4JavaException {
		// create command(true表示使用GraphicsMagick,API上有说)
		ConvertCmd convert = new ConvertCmd(true);
		// create the operation, add images and operators/options
		IMOperation op = new IMOperation();
		op.addImage();
		// 设置背景颜色
		op.background(bgColor);
		// 缩放后不足的地方填充背景颜色
		op.resize(rectw, recth).gravity("center").extent(rectw, recth);
		// 加水印,有中文乱码问题,我实验的时候用的英文。期待有人解决
		op.font("C:\\Windows\\Fonts\\simsun.ttc").gravity("southeast").pointsize(14).fill("red").draw("text 10,10 '" + text + "'");
		op.addImage();
		convert.run(op, srcPath, desPath);
	}
}

 测试代码:

 

public static void main(String[] args) throws Exception {
		// PictureUtil.cropImageCenter("E:/360download/2.jpg", "E:/360download/myimage_small.jpg", 800, 600, "#CCCCCC", "test");
		PictureUtil.cropImageCenter("E:/360download/2.jpg", "E:/360download/myimage_small.jpg", 800, 600);
	}

 实验的完成参考了别人的代码及文章。

推荐:GraphicsMagick+im4java 图片处理

package com.tutu.social.app.action; import java.io.IOException; import org.im4java.core.ConvertCmd; import org.im4java.core.IM4JavaException; import o

本文实例是基于Windows平台 首先下载GraphicsMagick,地址: http://sourceforge.net/projects/graphicsmagick/files/graphicsmagick-binaries/1.3.18/ 和所有应用程序安装一样,直接下一步到安

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。