栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 实现图片合成 (com.google.zxing)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 实现图片合成 (com.google.zxing)

以下述伪需求为例,进行Java P图的展示

一、伪需求

使用微信的收款二维码替换支付宝收款码上的二维码。

先上上图:进行素材准备,这是老婆大人的收款码,如果您看满意了,可以给她个小惊喜。

           


二、技术分析
  1. 微信收款码替换支付宝上的二维码,则意味着在图层上:支付宝收款码的作为背景图,微信二维码为前景图;
  2. 我们需要做的就是【确定微信二维码在支付宝二维码上的坐标位置】即可;
三、上代码
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;


@Slf4j
@Component
public class PicMergeService {
    
    public static final String BACKGROUND = "/Users/zhanghl/merge_pic/alipay_code.jpg";
    
    public static final String FOREGROUND = "/Users/zhanghl/merge_pic/wxminicode.png";
    
    public static final String MERGE_PATH = "/Users/zhanghl/merge_pic/mergecode.png";

    public static void main(String[] args) {
        try {
            // 读取背景图
            File backgroundFile = new File(BACKGROUND);
            BufferedImage backImgBuffer = ImageIO.read(backgroundFile);

            // 读取前景图
            File foregroundFile = new File(FOREGROUND);
            BufferedImage foreImgBuffer = ImageIO.read(foregroundFile);

            // 生成一张底图,并设置宽度与高度,跟背景图的宽度高度一致,可根据需要修改获取使用指定背景图
//            BufferedImage blankImgBuffer = new BufferedImage(backImgBuffer.getWidth(), backImgBuffer.getHeight(), BufferedImage.TYPE_INT_RGB);
//            Graphics2D graphics = (Graphics2D) backImgBuffer.getGraphics();
//            graphics.setBackground(Color.WHITE);
//            graphics.fillRect(0, 0, backImgBuffer.getWidth(), backImgBuffer.getHeight());
            Graphics2D graphics = (Graphics2D) backImgBuffer.getGraphics();

            // 合成背景图 backImgBuffer
            graphics.drawImage(backImgBuffer, 0, 0, null);

            
            graphics.drawImage(foreImgBuffer, 0, 0, null);
            
            // 写入本地文件
            ImageIO.write(backImgBuffer, "PNG", new File(MERGE_PATH));
            
            // 线上业务可以将合成的文件上传到服务器,获取对应图片地址
        } catch (IOException ignored) {

        }finally {
            // TODO:线上业务使用,切记合成文件后上传服务后删除本地文件
            
        }
    }
}

    2.2
            



    
        
            com.google.zxing
            core
            ${com.google.zxing}
        
        
            com.google.zxing
            javase
            ${com.google.zxing}
        
    
四、看效果
设置前景图坐标 x = 0、y = 0 的效果 

设置前景图坐标 x = 200、y = 0 的效果 ​​​​​​

设置前景图坐标 x = 200、y = 400 的效果 ​​​​​​

设置前景图坐标 x = 210、y = 600 的效果 ​​​​​​

五、综述

通过合成坐标的设置发现,x轴 从左向右延伸、y轴 自上向下延伸,也即是说,x轴y轴的起点在图片的左上角;


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/852266.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号