Java把三张图片合成一个
商城业务中的客户分享,以及分销需要给客户生成一个推广图片
代码:
public String getAngentImgUrl(Spread spread) {
String fileName= UUID.randomUUID() +String.valueOf(spread.getAid());//图片名称
Account account=accountMapper.getAccountByAid(spread.getAid());
//拿到用户头像地址
String headUrl=account.getHeadImg();
//拿到用户推广的二维码地址
String qCodeUrl=account.getAgentUrl();
//背景地址
String bgUrl=dictionaryMapper.getCodeValue("bgImage","angent");
BufferedImage bufferedImageBg= ImageUtil.getBufferedImage(bgUrl);
BufferedImage bufferedImageQCode=ImageUtil.getBufferedImage(qCodeUrl);
BufferedImage bufferedImageHead=ImageUtil.getBufferedImage(headUrl);
//设置宽高
int width=598;
int height=598;
//画布
BufferedImage page= new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g=(Graphics2D)page.createGraphics();
//背景
g.drawImage(bufferedImageBg,0,0,width ,height ,null);
//设置头像图片的位置
g.drawImage(bufferedImageHead, 30,30, 100, 100, null);
//设置文字样式
g.setColor(Color.BLACK);
Font font=new Font("楷体", Font.BOLD, 30);
g.setFont(font);
//设置文字 以及位置
g.drawString("编号:******",150,90);
g.drawString("姓名:*****",150,120);
//设置二维码的位置
g.drawImage(bufferedImageQCode, 400,400, 150, 150, null);
//上传到七牛云
return QianNiuUpload.uploadInputStream(ImageUtil.bufferedImageToInputStream(page),fileName);
}
根据流上传到七牛云
public static String uploadInputStream(InputStream inputStream,String fileName){
//构造一个带指定 Region 对象的配置类
Configuration cfg = new Configuration(Region.region0());
//...其他参数参考类注释
UploadManager uploadManager = new UploadManager(cfg);
//...生成上传凭证,然后准备上传
String accessKey = PictureUtile.accessKey;
String secretKey = PictureUtile.secretKey;
String bucket = PictureUtile.bucketname;
//默认不指定key的情况下,以文件内容的hash值作为文件名
String key = fileName;
try {
Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);
Response response = uploadManager.put(inputStream, key, upToken,null,null);
//解析上传成功的结果
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
return PictureUtile.url +putRet.key;
} catch (Exception ex) {
ex.printStackTrace();
return null;
}
}