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实现合成海报相关推荐

  1. java 处理海报_通过java实现合成海报

    1.合成海报保存到本地 public static void drawImage(double x,double y,String backgroundUrl,String qrCodeUrl,Str ...

  2. 微信生成带参数的二维码,合成海报,扫码后推送小程序?

    微信服务号渠道二维码功能,支持生成带参数二维码,合成海报二维码,微信扫码后推送内容:结合微号帮平台48小时信息推送,推送微信小程序. 带参二维码 海报二维码 微信扫码后回复 48小时信息推送 在微号帮 ...

  3. 美食合成海报,脑洞开得有点Hold不住!!

    美食创意合成平面海报,更直接.更形象.更快速的视觉传达元素,同时也是一种大众化的视觉元素.如果说文字是最详尽的表达方式,色彩是最感性的表达方式,那么图片就是最直接.最直观的表达方式,脑洞都给你们了拿去 ...

  4. 高品质空间合成海报,让夜色更迷人

    设计一款海报,构思和想法都蛮重要,从信息归纳到版式.字体.配色方案等.在设计之前, 可以多看些同类型的优秀海报,学习构图思路和设计手法.有初步设计想法之后,就可以根据 画面需要寻找素材.当素材准备完毕 ...

  5. 商务建筑空间场景合成海报

    商务科技海报设计中合成海报占据重要的地位,很多的朋友可能对于合成海报是可望而不可 及,感觉很高大上,却又做不来! 这都不要紧,看看优图网 带来的商务建筑空间场景合成海报,PSD分层模 板,通过临摹,一 ...

  6. canvas合成海报所遇问题及解决方案总结

    最近做了一个用canvas合成海报图片的移动端项目,由于一点canvas基础都没有,所以去网上搜了一位前辈的demo,但是开发过程中遇到了很多问题,现将所遇问题及解决方法总结如下: 1.移动端canv ...

  7. 平面设计新手如何用PS制作出一张合成海报

    本文由:"学设计上兔课网"原创,图片素材来自网络,仅供学习分享 平面设计新手如何用PS制作出一张合成海报?本期教程给大家制作一张关于VR战争合成海报,从合成海报来讲我们要做到以下几 ...

  8. python图片合成海报

    记录知识点备用 功能:利用python合成海报,要求背景图上加上头像.昵称.二维码. import io import qrcode import requests from PIL import I ...

  9. 利用canvas把二维码和图片合成海报

    思路:在微信中登录,后台传来的是一个链接.一个名字.一张图片.把图片当做背景,画满整个画布.之后需要把链接转为二维码,使用jq.qrcode转化,转化完成后是一个canvas,把这个canvas再转成 ...

最新文章

  1. java 文件拷贝文件怎么打开_java如何拷贝文件
  2. codeblocks安装后提示找不到编译器,也找不到MinGW目录
  3. input blur获取不到当前值_解决 Laravel JWT 多表认证时获取不到当前认证用户的问题...
  4. jquery源码解析:jQuery数据缓存机制详解2
  5. java文本编辑器 运行_能编译运行java的简单文本编辑器
  6. Unity3D笔记十七 Unity3D生命周期
  7. k8s dashboard_k8s集群部署Dashboard
  8. [SSH] 设置密钥登陆
  9. css设置字体的行数,超出显示...
  10. html5 progress css,CSS内容:HTML5进度上的attr()不起作用
  11. php获取ip所有方式,php获取用户(客户端)真实IP地址的三种方法
  12. 视频加密能做到完全防止外传播吗?
  13. dtu连接mysql_Azure SQL 数据库中的DTU和eDTU是什么
  14. 在Ubuntu 16.04 中将应用添加到系统服务中
  15. Java基础教程-刘刚-专题视频课程
  16. 做外贸怎么起步,从哪里开发客户
  17. 微信小程序引入iconfont单色图标实例
  18. CSS之通过伪元素添加图标字体
  19. Android R AVB分析方法
  20. Cocos2dx 3.6.1运行html5的测试例子

热门文章

  1. 用户登录(使用Spring AOP记录登录日志)
  2. 被指将赴美上市的雪球:累计融资近3亿美元,股东股权已全部出质
  3. 抖音信号干扰特效怎么做?手把手教你AE制作
  4. html右侧有白边,html5有白边解决办法
  5. python Dataframe 根据某一列的值来删除多行
  6. 月经周期28天健康日历表
  7. arcgis弧段怎么加很多点_arcgis弧段怎么加很多点_莲子心营养价值高但是太苦喝不下去怎么办?别急,加这个就好很多。......
  8. java网上书店管理系统_简单的网上书店管理系统(java)
  9. vue监测数据的原理
  10. picpick尺子像素大小精度不够准确_光栅尺精度与分辨率有什么关系吗?