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

腾讯云建设个人网站手机端关键词排名优化软件

腾讯云建设个人网站,手机端关键词排名优化软件,专注于上海seo做网站建设,乐陵外贸seoSpringBoot接口中如何直接返回图片数据 目录 接口直接返回图片数据 起因 类似这种 根据个人经验 优雅的实现图片返回 接口直接返回图片数据 起因 最近在做涉及到分享推广的业务,需要由业务员分享二维码进入推广页面,由于是新项目,前期…

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.qdjiajiao.com/news/1950.html

相关文章:

  • 建立外贸网站多少钱相似图片在线查找
  • 大众点评网怎么做团购网站大数据营销的概念
  • 建设商业网站百度在线客服系统
  • 网站降权如何百度申诉网络推广赚钱
  • seo排名咨询seo优化器
  • 网站开发的在淘宝上是什么类目b2b免费发布信息网站
  • 合肥网站运营管理公司友情链接有哪些作用
  • 长春做网站优化的公司短期培训就业学校
  • 正规网站制作公司哪里有泉州关键词优化排名
  • 网站开发前景怎么样看广告赚钱的平台
  • 苏州网站建设搜q479185700网络营销案例及分析
  • 网站banner怎么做的专业网站优化排名
  • 用js做动态网站慧达seo免登录发布
  • 网站制作做站长挣钱企业关键词优化推荐
  • 做网站是怎么赚钱广州信息流推广公司
  • 手机网站与pc网站同步自己怎么制作网页
  • 做点小本意 哪个网站拿货便宜点seo外链购买
  • wordpress微信分享图长岭网站优化公司
  • wordpress多站点子目录建站百度商务合作电话
  • 个人网站界面模板做网站公司排名
  • 做网站需要学php哪些技术网站优化软件
  • 广西建设学院网站seo培训师
  • 做任务网站建设网站建设网络推广公司
  • 哪个网站可以做问卷调查seo的含义
  • 东莞天助网的网站互联网广告优势
  • 网站建设 .北京蓝纤网络推广运营团队
  • 阿里快速建站雅思培训机构哪家好机构排名
  • 在哪个网站可以免费制作简历宁波网站推广运营公司
  • python做网站吗seo关键词分析表
  • 易语言用电脑做网站服务器百度搜索榜