生成方式的util已经在另一篇文章里说过啦,这篇文章要参考这以下的链接才能看得懂

java生成海报并保存-包括微信小程序带场景值的二维码

1、第一种是生成base64的格式这种也是比较常见的

   @ApiOperation(value = "海报生成,返回的是base64图片")@ApiImplicitParams(value = {@ApiImplicitParam(name = "publishId", value = "分享海报发布id", paramType = "query", dataType = "Long")})@GetMapping(value = "/index")public Result<Object> posterUtils(@RequestParam Long publishId) throws Exception {PublishDO publishDO = findPetService.findPublishById(publishId);//作为场景值Long userId;if (publishDO.getUserId() == 0) {userId = Long.parseLong(publishDO.getExtObj().getString("oid"));} else {UserDO userDO = userServices.findUserById(publishDO.getUserId());userId = userDO.getId();}Set<String> t = publishDO.getImages();Iterator<String> it = t.iterator();String str = "";while (it.hasNext()) {str = it.next();}BufferedImage bufferedImage=PosterUtils.createPoster(userServices.getAccessToken(), publishDO.getTitle(), userId, publishDO.getRewardAmount().toString(), str);ByteArrayOutputStream os = new ByteArrayOutputStream();ImageIO.write(bufferedImage, "jpg", os);String encodeStr = Base64.getEncoder().encodeToString(os.toByteArray());os.close();return new ResultUtil<>().setData(encodeStr);}

2、生成流方式,这分为读取流和下载流 ,先说读取流 这个有点问题,当时使用的是小程序,在ios端是没问题但是在安卓端出现了不能下载的问题,但是还是把代码贴出来

  @ApiOperation(value = "海报生成,返回的是图片文件")@ApiImplicitParams(value = {@ApiImplicitParam(name = "publishId", value = "分享海报发布id", paramType = "query", dataType = "Long")})@GetMapping(value = "/mp")public void posterUtils(@RequestParam Long publishId,ServletResponse response) throws Exception {PublishDO publishDO = findPetService.findPublishById(publishId);//作为场景值Long userId;if (publishDO.getUserId() == 0) {userId = Long.parseLong(publishDO.getExtObj().getString("oid"));} else {UserDO userDO = userServices.findUserById(publishDO.getUserId());userId = userDO.getId();}Set<String> t = publishDO.getImages();Iterator<String> it = t.iterator();String str = "";while (it.hasNext()) {str = it.next();}BufferedImage bufferedImage=PosterUtils.createPoster(userServices.getAccessToken(), publishDO.getTitle(), userId, publishDO.getRewardAmount().toString(), str);ImageIO.write(bufferedImage, "jpg", response.getOutputStream());}

3、接下来是通用方法

 @GetMapping(value = "/postImg/{publishId}/{fileName}")public void postImg(@PathVariable("publishId") Long publishId,@PathVariable("fileName") String fileName,ServletResponse response) throws Exception {PublishDO publishDO = findPetService.findPublishById(publishId);//作为场景值Long userId;if (publishDO.getUserId() == 0) {userId = Long.parseLong(publishDO.getExtObj().getString("oid"));} else {UserDO userDO = userServices.findUserById(publishDO.getUserId());userId = userDO.getId();}Set<String> t = publishDO.getImages();Iterator<String> it = t.iterator();String str = "";while (it.hasNext()) {str = it.next();}BufferedImage bufferedImage=PosterUtils.createPoster(userServices.getAccessToken(), publishDO.getTitle(), userId, publishDO.getRewardAmount().toString(), str);ImageIO.write(bufferedImage, "jpg", response.getOutputStream());}

这种使用参数然后把生成的流拼接成像图片一样的格式就ok啦

java 几种生成海报的方式相关推荐

  1. JAVA 三种线程实现创建方式

    JAVA 三种线程实现/创建方式 方式一:继承Thread类 通过继承Thread类来创建一个自定义线程类.Thread类本质上就继承了Runable接口,代表一个线程类.启动线程的唯一办法就是通过T ...

  2. java几种读写文件的方式

    java.io的几种读写文件的方式 一.java把这些不同来源和目标的数据都统一抽象为数据流. Java语言的输入输出功能是十分强大而灵活的. 在Java类库中,IO部分的内容是很庞大的,因为它涉及的 ...

  3. Java几种常见的编码方式

    几种常见的编码格式  为什么要编码  不知道大家有没有想过一个问题,那就是为什么要编码?我们能不能不编码?要回答这个问题必须要回到计算机是如何表示我们人类能够理解的符号的,这些符号也就是我们人类使用的 ...

  4. Java几种生成synthetic方法的情况

    Java编译器将Java代码编译成过程中,会由编译器引入一些类.方法.属性,这些由编译器引入一些类.方法.属性会被标上synthetic字段.本文主要介绍几种编译器会生成synthetic方法的情况 ...

  5. js和php中几种生成验证码的方式

    之前做过取随机数和生成验证码的练习,都是通过取随机数作为数组下标,然后从数组中取值的方式(js): 1 /*验证码*/ 2 function sj_yzm(){ 3 //存一个包括数字和字母的数组 4 ...

  6. 几种生成验证码的方式以及计算表达式的计算

    kaptcha 数字字母形式验证码 google kaptcha验证码生成器且可以配置生成的验证码格式 引入依赖: <dependency><groupId>com.githu ...

  7. Java 三种集合的遍历方式

    List集合 四种:普通for循环.增强for循环(foreach).迭代器(iterator).forEach package demo05;import java.util.ArrayList; ...

  8. uni-app如何生成海报图片

    项目场景: 在uni-app中,通过点击邀请分享海报的方式,可以展示不同的海报,并通过扫描海报上的二维码来实现用户之间的关系绑定,从而实现分销功能: 每次生成的海报样式都可能不同,可以根据后台配置的宽 ...

  9. .net 后端生成海报

    以前项目中生成海报都是前端生成(html2canvas)但由于前端生成有各种各样的限制如 图片跨域,浏览器兼容等问题.老板就想网站中生成海报用回服务端生成海报的方式.直接通过链接就可以输出海报~~~~ ...

最新文章

  1. 源文件封装为IP的步骤
  2. GDAL库简介以及在Windows下编译过程
  3. iOS导航栏标题错乱的解决方法
  4. ZZUOJ1196: 单调数
  5. intellij idea 怎么全局搜索--转
  6. 全球及中国建筑产业十四五建设机会与运营风险探析报告2022版
  7. 生日快乐程序员的浪漫代码_python告白代码,只属于程序员的浪漫
  8. 苹果修复被 XCSSET 恶意软件滥用的3个 0day
  9. 在Linux Redhat 9.0使用YUM
  10. armeabi与armeabi-v7a的区别,绝对干货!
  11. Python 微信自动发送消息
  12. android 入门记录
  13. sql2000 sp3、sql2000 sp4升级补丁下载和安装须知
  14. 新增10所高校获批虚拟现实技术本科专业,中国市场将超千亿
  15. 利用labelme将json标签批量转换为png【图像分割数据集】
  16. gigaset812说明书_西门子+Gigaset+A280+说明书.pdf
  17. rv1126rv1109 对比
  18. PVE虚拟机黑群晖联机失败解决方法!
  19. AI绘画,治愈着甲方乙方的“恩怨情仇”
  20. ​McDSP APB 处理器开始支持 VST 和 AU 插件格式

热门文章

  1. 低功耗蓝牙芯片CH579系列开发记录
  2. 基于JS 高德地图设置设备图标
  3. 在mysql lt_amp;lt;转amp;gt;mysql 树查询话语
  4. ELK学习总结(2-1)mavel -》sense 和 索引初始化
  5. 计算机存储容量用K还是KB,计算机中容量单位B、KB、MB、GB和TB的关系
  6. C/C++语言编程规范
  7. 师父韩晋文先生传授的八卦掌套路
  8. 拉格朗日乘数法(Lagrange multiplier)
  9. 最优服务次序问题 和 汽车加油问题
  10. 原来我们都让历史书骗了- -#!~