Java学习问题2:网络传输的图片转base64遇到的坑

1.之前写图片转base64流的写法

     File file = new File("D:\\test\\img11.jpg");InputStream inputStream = null;BufferedOutputStream bos = null;FileOutputStream outputStream = null;try {//读取文件转图片base64流inputStream = new  FileInputStream(file);//inputStream.available()可以在读写操作前提前得知数据流有多少字节,初始化byte数组byte[] image = new byte[inputStream.available()];int readBytes = 0;inputStream.read(image);//将图片转为base64流BASE64Encoder encoder = new BASE64Encoder();String imageString = encoder.encode(image);//将base64流转图片File dir = new File("D:\\test");if(!dir.exists() && dir.isDirectory()){dir.mkdir();}BASE64Decoder decoder = new BASE64Decoder();byte[] outByte = decoder.decodeBuffer(imageString);File outFile =  new File("D:\\test\\test1.jpg");outputStream = new FileOutputStream(outFile);bos = new BufferedOutputStream(outputStream);bos.write(outByte);} catch (IOException e) {e.printStackTrace();} finally {if (inputStream != null) {try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}if (bos != null) {try {bos.close();} catch (IOException e1) {e1.printStackTrace();}}if (outputStream != null) {try {outputStream.close();} catch (IOException e1) {e1.printStackTrace();}}}

但是inputStream.available()在网络传输过程中,很有可能返回的是0,非常不靠谱!基本网上都是这个写法,在本地无论测试多少遍都是ok的。

2.不应该定义数组大小,而是交给缓存数组遍历while来做,修改后的代码如下。

     InputStream in = null;String imageString = null;byte[] image = null;try {in = new FileInputStream("F:\\xsnasnew\\groupvisit\\actword\\test.jpg");ByteArrayOutputStream output = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int n = 0;while (-1 != (n = in.read(buffer))) {output.write(buffer, 0, n);}image = output.toByteArray();} catch (Exception e) {e.printStackTrace();} finally {if(in!=null){try {in.close();} catch (IOException e) {e.printStackTrace();}}}if(image != null && image.length > 0){BASE64Encoder encoder = new BASE64Encoder();imageString = encoder.encode(image);}

图片流转base64遇到的坑相关推荐

  1. 通过图片和base64互转,实现图片上传和下载显示以及踩坑

    前言 实现一个类似于微信的图片界面,包括拍照和相册,拍照包括裁剪,相册包括预览,可以选中指定张数的图片,将图片转换为base64上传到服务器.可以从服务器将已经上传的图片资源,通过base64字符串下 ...

  2. 记录一次Base64.encodeBase64String(data)和BASE64Encoder().encode(data)图片转base64的坑点

    问题场景是使用BASE64Encoder().encode(data)将图片转换成base后在本地调试是可以稳定运行的,与前端联调也是没有问题的,但是将服务部署到服务器在页面访问的时候就一直出现转换的 ...

  3. 小程序图片转Base64,方法总结。

    小程序图片转base64 前言:看了很多博客没一个能解决问题的,小程序社区也逛了个遍,依然找不到小程序图片在本地转base64的方法,凡事还得靠自己啊,接下来就把所有方法做个总结,作为一个野生程序员, ...

  4. java base64转字图片、图片转base64字符串

    实现代码如下: @Slf4j public class Base64ToFileImageTools {/*** base64字符串转化成图片** @param imgData 图片编码* @para ...

  5. 针对文件流转Base64的操作

    针对文件流转Base64的操作 package org.Util;import java.io.*; import java.net.URL; import java.net.URLConnectio ...

  6. java 图片 base64_java实现图片转base64字符串 java实现base64字符串转图片

    java 图片转base64字符串.base64字符串转图片,具体内容如下 1. 图片转base64字符串: /** * base64编码字符串转换为图片 * @param imgStr base64 ...

  7. vue-quill-editor上传内容由于图片是base64的导致字符太长的问题解决

    vue-quill-editor上传内容由于图片是base64的导致字符太长的问题解决 参考文章: (1)vue-quill-editor上传内容由于图片是base64的导致字符太长的问题解决 (2) ...

  8. java svgbase64转byte_java 图片进行base64 编码解码

    java 图片进行base64 编码解码 刘振兴 代码分享 2017年06月07日 10555 2条评论 import sun.misc.BASE64Decoder; import sun.misc. ...

  9. java编写之jpg图片与base64编码之间的转换

    /** * @author zyq * 将网络图片进行Base64位编码 * @param imgUrl * */ public static String encodeWebImageToBase6 ...

最新文章

  1. 记录一下mathtype输入任意形式矩阵
  2. (转)Windows7 “上帝模式”的原理
  3. 从AVL树的定义出发,一步步推导出旋转的方案。
  4. 数据结构 非线性结构 树 介绍及存储方法
  5. C#--WinForm项目主窗体设计
  6. windows安装ffmpeg
  7. SQL 性能优化梳理 —— 基本概念、创建时优化、查询时优化
  8. 关于模型验证那点事儿
  9. thinkphp 编辑器kindeditor
  10. new关键字对类成员的阻断
  11. 采集浏览器访问某网站时产生的流量,并保存为pcap文件
  12. c 关闭html,运行node Server.js后如何关闭?
  13. IDEA - 返回上一步,回到下一步 代码 快捷键
  14. C++求解一元二次方程
  15. 顶级在线图片处理工具Photopea
  16. 电子取证平台需求设计文档
  17. 【c语言】编程实现分段函数(适合初学者)
  18. maven-resources-plugin报红
  19. 第六届蓝桥杯大赛个人赛决赛(C/C++大学B组)
  20. 数字面板表行业调研报告 - 市场现状分析与发展前景预测

热门文章

  1. 校园笔记-CSS-网页穿上美丽外衣
  2. kotlin——xml解析
  3. 设置python编码
  4. 计算机零配件的增值税率,​电脑耗材增值税税率是多少
  5. CSS3 实现 div 上下滑入滑出效果
  6. STM32串口发送16位数组
  7. leetcode_1046. 最后一块石头的重量
  8. Enhancing Text-based Reinforcement Learning Agentswith Commonsense Knowledge
  9. web前端之回调函数(callback)
  10. 记录如何玩一个二手的H3C WA2620-AGN