公司要求生成个带章的电子回单图片,特此记录下demoe
import com.sun.image.codec.jpeg.ImageFormatException;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageDecoder;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
import java.io.*;
public class DrawImageTest {
public static void main(String[] args) {
DrawImageTest.Test();
}
public static void Test() {
try {
//生成以后新的图片地址
File fo = new File("D:\\tmp\\Pictures\\4.jpg");
//读取的图片文件
String imagePath = "D:\\tmp\\Pictures\\gamersky_04origin_07_201781221338CD.jpg";
//盖章的图片文件
String toimagepth = "D:\\tmp\\Pictures\\20200904232106.PNG";
//得到图片的文件流
InputStream imageIn;
imageIn = new FileInputStream(new File(imagePath));
//得到输入的编码器,将文件流进行jpg格式编码
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(imageIn);
//得到编码后的图片对象
//BufferedImage image = decoder.decodeAsBufferedImage();
BufferedImage image = ImageIO.read(new File(imagePath));
//Graphics g = image.getGraphics();
Graphics2D g = image.createGraphics();
Color mycolor = Color.black;
g.setColor(mycolor);
try {
InputStream imageIn2 = null;
imageIn2 = new FileInputStream(new File(toimagepth));
//得到输入的编码器,将文件流进行jpg格式编码
JPEGImageDecoder decoder2 = JPEGCodec.createJPEGDecoder(imageIn2);
//得到编码后的图片对象
//BufferedImage image2 = decoder2.decodeAsBufferedImage();
BufferedImage image2 = ImageIO.read(new File(toimagepth));
//加盖图片章
ImageObserver obser = null;
int x = image.getWidth() - image2.getWidth();
int y = image.getHeight() - image2.getHeight();
g.drawImage(image2, 500, 500, obser);
//g.drawImage(image2, 243, 173, 200, 200, obser);
g.setFont(new Font("宋体", Font.PLAIN, 20));
g.drawString("以添加印章", 241, 319);
} catch (FileNotFoundException e) {
//打开文件失败,表示章图片不存在,这时候直接加盖文件章(签名)
}
g.dispose();
ImageIO.write(image, "jpeg", fo);
/* OutputStream os = new FileOutputStream("C:\\Users\\baichen\\Pictures\\gggg.jpg");
//创键编码器,用于编码内存中的图象数据。
JPEGImageEncoder en = JPEGCodec.createJPEGEncoder(os);*/
System.out.println("ok");
} catch (FileNotFoundException e) {
// 自动生成 catch 块
e.printStackTrace();
} catch (ImageFormatException e) {
// 自动生成 catch 块
e.printStackTrace();
} catch (IOException e) {
// 自动生成 catch 块
e.printStackTrace();
}
}
}