java 处理海报_通过java实现合成海报
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实现合成海报相关推荐
- java 推广海报_使用java画一张海报
PS: 没找到合适的海报背景,就随便找了一张,使用技术都是相同的 1. 添加依赖 这俩其实跟本章节的核心技术没有关系,是为了获取QQ昵称和QQ头像而引入的. org.jsoup jsoup 1.11. ...
- java海报_使用java画一张海报
PS: 没找到合适的海报背景,就随便找了一张,使用技术都是相同的 1. 添加依赖 这俩其实跟本章节的核心技术没有关系,是为了获取QQ昵称和QQ头像而引入的. org.jsoup jsoup 1.11. ...
- java正则表达式 匹配()_学习Java正则表达式(匹配、替换、查找)
import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public c ...
- java核心教程_核心Java教程
java核心教程 Welcome to Core Java Tutorial. I have written a lot on Core Java and Java EE frameworks. Th ...
- java 包命名_【Java】包的命名规则
命名规范 包:所有单词的字母小写,之后每个单词用-隔开,如 org.nemo.demo 常量:所有单词的字母大写,之后每个单词用_隔开,如 FLAG 类:所有单词的首字母大写,如 TestJava p ...
- java 图片效果_使用Java进行图片底片化效果处理
使用java代码读取图片,并进行底片化处理 util importjava.awt.image.BufferedImage;importjava.io.File;importjava.util.Arr ...
- java array缓存_有java数组
[JAVA零基础入门系列]Day10 Java中的数组 [JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 D ...
- java 分割一个_分割java
[java]分割字符串工具类,霸气 jdk自带的 java 分割字符串,分割string,可以根据多个条件去分割.比如逗号,分号,逗号或者分号. 比如一个字符串:"abc,def;gh,ij ...
- java 字符串包_包java字符串
Java核心技术卷I基础知识3.6.3 不可变字符串 3.6.3 不可变字符串 String类没有提供用于修改字符串的方法.如果希望将greeting的内容修改为"Help!",不 ...
最新文章
- JVM年轻代,老年代,永久代详解
- OpenVINO 从yml处提取model下载链接,以mobile-ssd为例
- 一个DDOS病毒的分析(二)
- 硬盘结构,主引导记录MBR,硬盘分区表DPT,主分区、扩展分区和逻辑分区,电脑启动过程...
- BeetleX服务网关授权配置
- controller如何保证当前只有一个线程执行_聊聊Spring线程安全,读完之后,大部分程序员收藏了......
- 【HDU - 1269】迷宫城堡 (tarjan算法模板)
- 五、Web服务器——MVC开发模式 EL表达式 JSTL 学习笔记
- Android 系统(18)---Handler,MessageQueue与Looper关系
- bat获取命令返回值_全网都在找的redis字符串命令,总结在这了
- 华为方舟编译器开源,我命由我不由天!
- 在线手机号码提取工具
- numpy-np.isin
- ShellServiceObjectDelayLoad注册表键值作用
- 动态规划——一维dp数组与二维dp数组
- messenger支持查找附近的人功能吗_玩微信,附近的人,是否双方都在查找附近的人,才能显示?...
- python链家二手房_python采集链家二手房信息
- 微信小程序调取微信支付遇到的问题“商户号该产品权限未开通,请前往商户平台产品中心检查后重试”
- 来啊,一起来智障啊:国外大火游戏人类一败涂地究竟有多好玩?
- 热门解读:社交裂变的拉新效果评估及优化
热门文章
- 精益数据分析 | 学习笔记 (全)
- Lumerical Python API学习之补充笔记
- Solr or Lucene全文检索实现原理
- 【日语】日语常见寒暄语(一)
- python画图三维标记_Python matplotlib绘图示例 - 绘制三维图形
- 什么是进程? 进程具有哪些主要特性? 比较进程与程序之间相同点与不同点
- R语言计量经济学:虚拟变量(哑变量)在线性回归模型中的应用
- vue 动态获取的图片路径不显示_解决Vue动态加载本地图片问题
- Pytorch搭建CNN进行图像分类
- 云服务器购买代码,购买 Linux 云服务器(示例代码)