IM4Java教程: PDF 生成GIF

废话休叙,归入正题.

在服务器端需要安装GraphicsMagick,ghostscript.ImageMagick

 

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


 



	private final static int DEFAULT_DPI = 72;
	//gif的宽度
	private static final int FIX_MAX_WIDTH = 600;
	

	/**
	 * 
	 * @description render single page pdf file to gif with gm command
	 * @param actualPageWidth: pdf宽度
	 * @param mpages:pdf内容
	 * @param interval : gif时间间隔
	 * @return
	 * @throws IOException
	 * @throws IM4JavaException
	 * @throws InterruptedException
	 */
	public byte[] renderImage(float actualPageWidth, byte[] mpages, int interval) throws IOException,
			IM4JavaException, InterruptedException {
		GMOperation op = new GMOperation();
		float scale = actualPageWidth / FIX_MAX_WIDTH;
		// 图片质量
		op.quality(75.0);
		op.addRawArgs("-density", Double.toString(DEFAULT_DPI / scale));
		op.addRawArgs("-gravity", "center");
		op.addRawArgs("-auto-orient");
		op.addRawArgs("-strip");
		op.addRawArgs("-delay", interval == 0 ? "50" : (interval / 10.0) + "");
		// 待处理图片的绝对路径
		op.addImage("-");
		//降低gif大小
		op.addRawArgs("-fuzz", "2%");
		op.addRawArgs("-layers", "Optimize");
		op.addImage("gif:-"); // output: stdout
		// 如果使用ImageMagick,设为false,使用GraphicsMagick,就设为true,默认为false
		ConvertCmd cmd = new ConvertCmd(false);
		//加缓存
		ByteArrayOutputStream baos = new ByteArrayOutputStream(65536);
		Pipe pipeInOut = new Pipe(new ByteArrayInputStream(mpages), baos);
		cmd.setInputProvider(pipeInOut);
		cmd.setOutputConsumer(pipeInOut);
		cmd.run(op);
		return baos.toByteArray();
	}

https://my.oschina.net/osgit/

转载于:https://my.oschina.net/osgit/blog/868894

GraphicsMagick号称图像处理领域的瑞士军刀。 短小精悍的代码却提供了一个鲁棒、高效的工具和库集合,来处理图像的读取、写入和操作,支持超过88种图像格式,包括重要的DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF。 通过使用OpenMP可是利用多线程进行图片处理,增强了通过扩展CPU提高处理能力。 GraphicsMagick可以在绝大多数的平台上使用,Linux、Mac、Windows都没有问题。 GraphicsMagick 支持大图片的处理,并且已经做过GB级别的图像处理实验。GraphicsMagick能够动态的生成图片,特别适用于互联网的应用。可以用来处理调整尺寸、旋转、加亮、颜色调整、增加特效等方面。GaphicsMagick不仅支持命令行的模式,同时也支持C、C++、Perl、PHP、Tcl、 Ruby等的调用。事实上,GraphicsMagick是从 ImageMagick 5.5.2 分支出来的,但是现在他变得更稳定和优秀,下面就是两个之间的一些比较。 GM更有效率(测评),能更快的完成处理工作 GM更小更容易安装 GM已经被Flickr和Etsy使用,每天处理百万计的图片 GM与已经安装的软件不会发生冲突 GM几乎没有安全问题 GM的手册非常丰富 im4java是ImageMagick的一个Java开源接口,使用起来非常方便。 很多网站都会用到对图片的一些处理,包括图片的裁剪、给图片加水印、按比例缩放图片等操作,用ImageMagick实现这些功能,性能非常好,图片还不会失真. 本文档详细的介绍了 GraphicsMagick+im4java的搭建过程,对一些搭建过程中出现的问题进行了详细的解答,避免采坑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值