1.合成海报保存到本地

public static void drawImage(double x,double y,String backgroundUrl,String qrCodeUrl,String text,Integer color) throws IOException {

BufferedImage bgBufImage = ImageIO.read(new URL(backgroundUrl)); //获取图片

Graphics2D bgBufImageGraphics = bgBufImage.createGraphics(); //创建一个图形

BufferedImage qrCodeImage = ImageIO.read(new URL(qrCodeUrl)); //获取图片

Integer width = Integer.valueOf(new BigDecimal(x * bgBufImage.getWidth() / 100).setScale(0, BigDecimal.ROUND_HALF_UP).toString());

Integer height = Integer.valueOf(new BigDecimal(y * bgBufImage.getHeight() / 100).setScale(0, BigDecimal.ROUND_HALF_UP).toString());

bgBufImageGraphics.drawImage(qrCodeImage, width, height, qrCodeImage.getWidth(), qrCodeImage.getHeight(), null); //设置图片的位置

if (!StringUtils.isEmpty(text)){

bgBufImageGraphics.setColor(new Color(color));

bgBufImageGraphics.setFont(new Font("黑体",Font.PLAIN, 47));

FontMetrics fm = bgBufImageGraphics.getFontMetrics(new Font("黑体",Font.PLAIN, 47));

int textWidth = fm.stringWidth(text);

int qrCodeWidth = qrCodeImage.getWidth();

bgBufImageGraphics.drawString(text,width + ((qrCodeWidth - textWidth) / 2),(height - 50));

}

bgBufImageGraphics.dispose();

ImageIO.write(bgBufImage, "png", new File("D:\\file\\demo1.png"));

System.out.println("生成图片完成");

}

2.合成海报保存到oss服务器

public String compositePoster(double x,double y,String backgroundUrl,String qrCodeUrl,String text,Integer color) throws IOException {

BufferedImage bgBufImage = ImageIO.read(new URL(backgroundUrl)); //获取图片

Graphics2D bgBufImageGraphics = bgBufImage.createGraphics(); //创建一个图形

BufferedImage qrCodeImage = ImageIO.read(new URL(qrCodeUrl)); //获取图片

Integer width = Integer.valueOf(new BigDecimal(x * bgBufImage.getWidth() / 100).setScale(0, BigDecimal.ROUND_HALF_UP).toString());

Integer height = Integer.valueOf(new BigDecimal(y * bgBufImage.getHeight() / 100).setScale(0, BigDecimal.ROUND_HALF_UP).toString());

bgBufImageGraphics.drawImage(qrCodeImage, width, height, qrCodeImage.getWidth(), qrCodeImage.getHeight(), null); //设置图片的位置

if (!StringUtils.isEmpty(text)){

bgBufImageGraphics.setColor(new Color(color));

bgBufImageGraphics.setFont(new Font("黑体",Font.PLAIN, 47));

FontMetrics fm = bgBufImageGraphics.getFontMetrics(new Font("黑体",Font.PLAIN, 47));

int textWidth = fm.stringWidth(text);

int qrCodeWidth = qrCodeImage.getWidth();

bgBufImageGraphics.drawString(text,width + ((qrCodeWidth - textWidth) / 2),(height - 50));

}

bgBufImageGraphics.dispose();

ByteArrayOutputStream bs = new ByteArrayOutputStream();

ImageOutputStream imgOut = ImageIO.createImageOutputStream(bs);

ImageIO.write(bgBufImage, "png", imgOut);

InputStream inSteam = new ByteArrayInputStream(bs.toByteArray());

String fileName = URLDecoder.decode(backgroundUrl.split("/")[backgroundUrl.split("/").length -1 ], "UTF-8");

String uuid = UUID.randomUUID().toString() + ".png";

ossUtils.uploadFiles(inSteam,uuid,fileName);

return ossUtils.getObjectUrl(uuid);

}

传入的参数

合成的效果

java 处理海报_通过java实现合成海报相关推荐

  1. java 推广海报_使用java画一张海报

    PS: 没找到合适的海报背景,就随便找了一张,使用技术都是相同的 1. 添加依赖 这俩其实跟本章节的核心技术没有关系,是为了获取QQ昵称和QQ头像而引入的. org.jsoup jsoup 1.11. ...

  2. java海报_使用java画一张海报

    PS: 没找到合适的海报背景,就随便找了一张,使用技术都是相同的 1. 添加依赖 这俩其实跟本章节的核心技术没有关系,是为了获取QQ昵称和QQ头像而引入的. org.jsoup jsoup 1.11. ...

  3. java正则表达式 匹配()_学习Java正则表达式(匹配、替换、查找)

    import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public c ...

  4. java核心教程_核心Java教程

    java核心教程 Welcome to Core Java Tutorial. I have written a lot on Core Java and Java EE frameworks. Th ...

  5. java 包命名_【Java】包的命名规则

    命名规范 包:所有单词的字母小写,之后每个单词用-隔开,如 org.nemo.demo 常量:所有单词的字母大写,之后每个单词用_隔开,如 FLAG 类:所有单词的首字母大写,如 TestJava p ...

  6. java 图片效果_使用Java进行图片底片化效果处理

    使用java代码读取图片,并进行底片化处理 util importjava.awt.image.BufferedImage;importjava.io.File;importjava.util.Arr ...

  7. java array缓存_有java数组

    [JAVA零基础入门系列]Day10 Java中的数组 [JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 D ...

  8. java 分割一个_分割java

    [java]分割字符串工具类,霸气 jdk自带的 java 分割字符串,分割string,可以根据多个条件去分割.比如逗号,分号,逗号或者分号. 比如一个字符串:"abc,def;gh,ij ...

  9. java 字符串包_包java字符串

    Java核心技术卷I基础知识3.6.3 不可变字符串 3.6.3 不可变字符串 String类没有提供用于修改字符串的方法.如果希望将greeting的内容修改为"Help!",不 ...

最新文章

  1. JVM年轻代,老年代,永久代详解
  2. OpenVINO 从yml处提取model下载链接,以mobile-ssd为例
  3. 一个DDOS病毒的分析(二)
  4. 硬盘结构,主引导记录MBR,硬盘分区表DPT,主分区、扩展分区和逻辑分区,电脑启动过程...
  5. BeetleX服务网关授权配置
  6. controller如何保证当前只有一个线程执行_聊聊Spring线程安全,读完之后,大部分程序员收藏了......
  7. 【HDU - 1269】迷宫城堡 (tarjan算法模板)
  8. 五、Web服务器——MVC开发模式 EL表达式 JSTL 学习笔记
  9. Android 系统(18)---Handler,MessageQueue与Looper关系
  10. bat获取命令返回值_全网都在找的redis字符串命令,总结在这了
  11. 华为方舟编译器开源,我命由我不由天!
  12. 在线手机号码提取工具
  13. numpy-np.isin
  14. ShellServiceObjectDelayLoad注册表键值作用
  15. 动态规划——一维dp数组与二维dp数组
  16. messenger支持查找附近的人功能吗_玩微信,附近的人,是否双方都在查找附近的人,才能显示?...
  17. python链家二手房_python采集链家二手房信息
  18. 微信小程序调取微信支付遇到的问题“商户号该产品权限未开通,请前往商户平台产品中心检查后重试”
  19. 来啊,一起来智障啊:国外大火游戏人类一败涂地究竟有多好玩?
  20. 热门解读:社交裂变的拉新效果评估及优化

热门文章

  1. 精益数据分析 | 学习笔记 (全)
  2. Lumerical Python API学习之补充笔记
  3. Solr or Lucene全文检索实现原理
  4. 【日语】日语常见寒暄语(一)
  5. python画图三维标记_Python matplotlib绘图示例 - 绘制三维图形
  6. 什么是进程? 进程具有哪些主要特性? 比较进程与程序之间相同点与不同点
  7. R语言计量经济学:虚拟变量(哑变量)在线性回归模型中的应用
  8. vue 动态获取的图片路径不显示_解决Vue动态加载本地图片问题
  9. Pytorch搭建CNN进行图像分类
  10. 云服务器购买代码,购买 Linux 云服务器(示例代码)