当前位置: 首页 > news >正文

怎样建设网站卖农产品h5 移动 网站 开发

怎样建设网站卖农产品,h5 移动 网站 开发,利用网盘做网站,佛山新网站建设特色SpringBoot接口中如何直接返回图片数据 目录 接口直接返回图片数据 起因 类似这种 根据个人经验 优雅的实现图片返回 接口直接返回图片数据 起因 最近在做涉及到分享推广的业务,需要由业务员分享二维码进入推广页面,由于是新项目,前期…

SpringBoot接口中如何直接返回图片数据

目录
  • 接口直接返回图片数据

  • 起因

  • 类似这种

  • 根据个人经验

  • 优雅的实现图片返回

接口直接返回图片数据

起因

最近在做涉及到分享推广的业务,需要由业务员分享二维码进入推广页面,由于是新项目,前期预算和用量都有限,没有搭建对象存储服务,所以决定使用后台服务动态生成二维码图片直接图片数据并返回。

首先是二维码的生成,决定使用google的zxing,毕竟google的东西还是不错的,maven添加依赖如下:

<!-- https://mvnrepository.com/artifact/com.google.zxing/core --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.3.3</version></dependency><!-- https://mvnrepository.com/artifact/com.google.zxing/javase --><dependency><groupId>com.google.zxing</groupId><artifactId>javase</artifactId><version>3.3.3</version></dependency>

继续查zxing的使用方法,发现大多数都是生成二维码然后写成图片文件的,不太适合我现在的情况。

类似这种

Map hints = new HashMap();
hints.put(EncodeHintType.CHARACTER\_SET, "utf-8");
hints.put(EncodeHintType.ERROR\_CORRECTION, ErrorCorrectionLevel.M);
hints.put(EncodeHintType.MARGIN, 2);
BitMatrix qrcode = new QRCodeWriter().encode(href, BarcodeFormat.QR\_CODE, 300, 300);
//网上的方案大多数都是通过io流写到文件系统,
MatrixToImageWriter.writeToStream(qrcode,"png",response.getOutputStream());

于是企图用response的输出流返回,但是返回的数据浏览器看到的全是乱码,这种方案并没有成功

根据个人经验

一般这种开源方案既然二维码数据BitMatrix对象都生成了,肯定有获取原始数据的方法,点进MatrixToImageWriter类搜索方法,果然,找到了能直接返回BufferedImage对象的方法

现在,BufferedImage对象已经有了,只差把它扔回前端了,继续百度,发现可以直接返回该对象,类似以下配置

@GetMapping(value = "/qrcode", produces = MediaType.IMAGE\_JPEG\_VALUE)
@ResponseBody
public BufferedImage generateQRCode() {//返回BufferedImage的对象}

以为问题即将解决,然而浏览器访问返回406,上网一查,原来是没有对应消息类型的转换器导致的,有博主提到需要如下配置

@Beanpublic BufferedImageHttpMessageConverter addConverter(){return new BufferedImageHttpMessageConverter();}

加了上面的配置后发现问题仍没有解决,报错仍是406,怀疑配置没有生效,于是决定走源码查看原因。debug源码时发现messageConverters的list中确实没有我配置的,说明的确是配置问题,查找messageConverters的set操作,查到如图的地方

发现springMVC是在配置RequestMappingHandlerAdapter设置的HttpMessageConverter,进入getMessageConverters()方法

根据我的工地英语8级,extendMessageConverters这个方法应该是在添加自定义的HttpMessageConverter,进入该方法

空实现,很明显估计是模板模式,需要自己去扩展,于是自己写了一个配置类继承WebMvcConfigurationSupport,重写extendMessageConverters方法

    @Overrideprotected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {converters.add(new BufferedImageHttpMessageConverter());}

浏览器再访问,二维码图片展示,问题解决

**总结:**实现一个方案的过程中碰到了各种各样的奇怪问题,最好的方式是先网上找资料快速解决问题,如果无法解决,再通过自己走源码的方式从根本原因上寻找出现问题的原因,解决问题最复杂的地方是定位问题,问题定位了,解决便不再是难题

优雅的实现图片返回

注意:response.setContentType(“image/png”);这行代码一定要加上

@RestController
@Slf4j
@Api(tags = SwaggerConfig.TAG\_IMAGE)
@RequestMapping(SwaggerConfig.TAG\_IMAGE)
public class ImageController {@Resourceprivate HttpServletResponse response;@GetMapping(value = "/getImage")@ApiOperation("获取图片-以ImageIO流形式写回")public void getImage() throws IOException {OutputStream os = null;try {
//        读取图片BufferedImage image = ImageIO.read(new FileInputStream(new File("F:\\\\谷歌下载\\\\未命名文件.png")));response.setContentType("image/png");os = response.getOutputStream();if (image != null) {ImageIO.write(image, "png", os);}} catch (IOException e) {log.error("获取图片异常{}",e.getMessage());} finally {if (os != null) {os.flush();os.close();}}}
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

  • 1秒钟实现Springboot 替换/写入 word文档里面的文字、图片功能

  • SpringBoot上传图片到指定位置并返回URL的实现

  • springboot实现通过路径从磁盘直接读取图片

  • 1秒实现Springboot 图片添加水印功能

  • SpringBoot

  • 接口

  • 返回图片

  • 数据

最新评论

  • 如何使用Spring+redis实现对session的分布式管理

最近更新的内容

  • java静态代理的含义及用法
  • Java实现MD5加密及解密的代码实例分享
  • 学生视角手把手带你写Java 线程池初版
  • Spring Boot Admin实现服务健康预警功能
  • Java实现多人聊天室(含界面)
  • Java 条件控制与循环控制实例
  • SpringBoot整合log4j日志与HashMap的底层原理解析
  • 基于StringBuilder类中的重要方法(介绍)
  • java关键字final使用方法详解
  • Spring cloud 查询返回广告创意实例代码
http://www.yayakq.cn/news/287526/

相关文章:

  • 国内炫酷的网站设计网络推广网站 优帮云
  • 蛋糕网站模板建设网站怎么賺钱
  • 网站 意义我是做性视频网站
  • 网站备案的影布怎么做做设计素材在哪个网站
  • 做英德红茶的网站深圳宝安区住房和建设局网站官网
  • 手机像素网站科学做视频网站
  • 佛山做网站的公司有哪些wordpress 公司插件
  • 国际婚恋网站做翻译合法吗最近房地产行情
  • 室内设计网站大全网在家用服务器做网站
  • 黄冈网站开发百度推广seo是什么意思
  • 品牌推广方案设计上海城市分站seo
  • 禹州 什么团购网站做的好绍兴做团购的网站
  • 网站做邮箱做cpa的博客网站类型
  • 怎么做网站网页vps云主机可以建立几个网站
  • 绍兴网站设计智慧社区背景图
  • 如何用ps做网站平面图wordpress找回密码链接
  • 企业做网站用dedeCMS免费吗延吉市住房城乡建设局官方网站
  • 宝塔做两个网站免费网站空间 评测
  • 福州 网站制作 外贸常德外贸网站优化推广
  • 石家庄营销型网站建设公司重庆比较好的广告公司
  • 织梦网站后台默认登陆路径网页pc端
  • 有用建站宝盒做网站的吗商丘百度推广公司地址
  • 九江网站建设排行榜百度搜索关键词查询
  • 手机中国建设银行网站东莞做网站那家好
  • 网站建设流程有哪七步百度问问首页
  • 网站自动识别手机代码洛阳微网站建设
  • 做平台是做网站和微信小程序的好别黄骅港开发区
  • 一个做网站的团队需要哪些番禺建设网站策划
  • 国内产品网站建立网站用英语
  • 南江县住房和城乡建设局网站信息管理系统网站开发教程