/**
* @date: 2023/4/16 15:01
* @Description:
*/
public class ImgUtils {
/***
* @Date: 2023/4/16 15:13
* @Description 将签字 和 指纹 的png图片合成一张
* @param qzBase64 签字base64
* @param zwBase64 指纹base64
**/
public static String hbImg(String qzBase64,String zwBase64){
String result = "";
if (!StringHelper.isEmpty(qzBase64) & !StringHelper.isEmpty(zwBase64)){
try {
byte[] qzBytes = new BASE64Decoder().decodeBuffer(qzBase64);
byte[] zwBytes = new BASE64Decoder().decodeBuffer(zwBase64);
// 设置图片大小
BufferedImage qzImg = resizeImagePng(256, 256, ImageIO.read(new ByteArrayInputStream(qzBytes)));
BufferedImage zwImg = resizeImagePng(256, 256, ImageIO.read(new ByteArrayInputStream(zwBytes)));
// 创建背景画布
BufferedImage background = new BufferedImage(qzImg.getWidth(), qzImg.getHeight(), BufferedImage.TYPE_INT_RGB);
// 设置背景色
Graphics2D g2d = background.createGraphics();
// 设置背景颜色
g2d.setColor(Color.WHITE);
// 填充
g2d.fillRect(0, 0, background.getWidth(), background.getHeight());
g2d.drawImage(qzImg, 0, 0, null);
g2d.dispose();
// 指纹写入
Graphics2D graphics = background.createGraphics();
// 设置图片透明度
graphics.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,1.0f));
graphics.drawImage(zwImg,0,0,zwImg.getWidth(), zwImg.getHeight(),null);
graphics.dispose();
// 取掉白色背景 设置为透明图片
ImageIcon imageIcon = new ImageIcon(background);
BufferedImage bufferedImage = new BufferedImage(imageIcon.getIconWidth(), imageIcon.getIconHeight(),
BufferedImage.TYPE_4BYTE_ABGR);
Graphics2D g2D = (Graphics2D) bufferedImage.getGraphics();
g2D.drawImage(imageIcon.getImage(), 0, 0, imageIcon.getImageObserver());
int alpha = 0;
for (int j1 = bufferedImage.getMinY(); j1 < bufferedImage.getHeight(); j1++) {
for (int j2 = bufferedImage.getMinX(); j2 < bufferedImage.getWidth(); j2++) {
int rgb = bufferedImage.getRGB(j2, j1);
int R = (rgb & 0xff0000) >> 16;
int G = (rgb & 0xff00) >> 8;
int B = (rgb & 0xff);
if (((255 - R) < 30) && ((255 - G) < 30) && ((255 - B) < 30)) {
rgb = ((alpha + 1) << 24) | (rgb & 0x00ffffff);
}
bufferedImage.setRGB(j2, j1, rgb);
}
}
g2D.drawImage(bufferedImage, 0, 0, imageIcon.getImageObserver());
// 输出流
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ImageIO.write(bufferedImage, "png", outputStream);
// 将合成图片转成base64返回
result = new BASE64Encoder().encode(outputStream.toByteArray());
}catch (Exception e){
e.printStackTrace();
}
}
return result;
}
/***
* @Date: 2023/4/16 15:14
* @Description 设置图片的大小
* @param x width
* @param y height
* @param bfi
**/
public static BufferedImage resizeImagePng(int x, int y, BufferedImage bfi) {
BufferedImage bufferedImage = new BufferedImage(x, y, BufferedImage.TYPE_INT_ARGB);
bufferedImage.getGraphics().drawImage(
bfi.getScaledInstance(x, y, Image.SCALE_SMOOTH), 0, 0, null);
return bufferedImage;
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容