读书人

图片增添印章或签名

发布时间: 2012-11-10 10:48:50 作者: rapoo

图片添加印章或签名

Java添加图片签名和图片印章非常容易。原理是将两张图片叠加。。。。

代码如下:

import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

import javax.imageio.ImageIO;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class CommonImageInput? {

?public void check () throws Exception {
??String targetImg="d:\\2.jpg";? //图片
??String targetImg1="d:\\3.gif"; //印章
??BufferedImage src=getImage(targetImg);
??BufferedImage src1=getImage(targetImg1);
??????? int width = src.getWidth(null);??
??????? int height = src.getHeight(null);??
??????? // 根据源图片尺寸,设置预装载的一个图片,默认是RGB格式的??
??????? BufferedImage image = new BufferedImage(width, height,??
??????????????? BufferedImage.TYPE_INT_RGB);??
??????? Graphics2D graphics = image.createGraphics();??
??????? // 绘制内存中的源图片至指定的矩形内??
??????? graphics.drawImage(src, 0, 0, width, height, null);
??????? graphics.drawImage(src1, width/2, height/2, src1.getWidth(), src1.getHeight(), null);
??OutputStream outPutStream;
??try {
???outPutStream = new FileOutputStream( "d:\\Chart1.jpg");
???JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(outPutStream);
???encoder.encode(image);
???outPutStream.close();
??} catch (Exception e) {
???// TODO Auto-generated catch block
???e.printStackTrace();
??}
?}
?
?BufferedImage getImage(String targetImg)throws Exception {
??// 装载源图片??
??????? File _file = new File(targetImg);??
??????? // 图片装入内存??
??????? BufferedImage src = ImageIO.read(_file);??
??????? // 获取图片的尺寸??
??????? return src;
?}

}

提示:eclipse会提示错误,无法调用JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder。

解决方法:这个是eclipse的设置问题,它默认把这些受访问限制的API设成了ERROR,你只要把
Windows-Preferences-Java-Complicer-Errors/Warnings
里面的Deprecated and restricted API中的Forbidden references(access rules)选为Warning就可以编译通过了。

读书人网 >软件架构设计

热点推荐