JAVA *** 作图片/合成/电子盖章等
/**
*
* @param mainFile
* @param file1
* @param f 透明度 最大为1
* @param response
* @return
* @throws IOException
* @throws InterruptedException
*/
@ApiOperation(value = "图片合成", notes = "图片合成")
@PostMapping(value = "phonto", consumes = "multipart/*", headers = "content-type=multipart/form-data")
public String upload(@RequestPart("file") MultipartFile mainFile, @RequestPart("file2") MultipartFile file1, @RequestParam("f") Float f, HttpServletResponse response) throws IOException, InterruptedException {
String tempath = null;
try {
Image src1 = ImageIO.read(mainFile.getInputStream());
Image src2 = ImageIO.read(file1.getInputStream());
int widthPdf = src1.getWidth(null);
int heighPdf = src1.getHeight(null);
int widthYz = src2.getWidth(null);
int heightYz = src2.getHeight(null);
BufferedImage thumbImage = new BufferedImage(widthPdf, heighPdf, BufferedImage.TYPE_INT_RGB);
Graphics2D g = thumbImage.createGraphics();
//主图片大小以及位置
g.drawImage(src1.getScaledInstance(widthPdf, heighPdf, Image.SCALE_SMOOTH), 0, 0, null);
//设置透明度 最大为1
g.setComposite( AlphaComposite.getInstance(AlphaComposite.SRC_OVER, f==0 ?0:f));
//设置第二张图片的大小以及在第一张上面的位置坐标
g.drawImage(src2.getScaledInstance(widthYz, heightYz, Image.SCALE_SMOOTH), 0, 0, null);
tempath = "D:\temp\" + "0.jpg"; //合成图片
String formatName = tempath.substring(tempath.lastIndexOf(".") + 1);
ImageIO.write(thumbImage, formatName , new File(tempath));
log.info("tempath:::" + tempath);
//浏览器直接打开图片文件
String [] commands = {
"cmd.exe" , "/c", "start" , "\"DummyTitle\"", "\"" + tempath + "\""
};
Process p = Runtime.getRuntime().exec(commands);
p.waitFor();
} catch (IOException e) {
e.printStackTrace();
} finally {
}
return tempath;
}
测试
实际效果:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)