图片流转base64遇到的坑
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遇到的坑相关推荐
- 通过图片和base64互转,实现图片上传和下载显示以及踩坑
前言 实现一个类似于微信的图片界面,包括拍照和相册,拍照包括裁剪,相册包括预览,可以选中指定张数的图片,将图片转换为base64上传到服务器.可以从服务器将已经上传的图片资源,通过base64字符串下 ...
- 记录一次Base64.encodeBase64String(data)和BASE64Encoder().encode(data)图片转base64的坑点
问题场景是使用BASE64Encoder().encode(data)将图片转换成base后在本地调试是可以稳定运行的,与前端联调也是没有问题的,但是将服务部署到服务器在页面访问的时候就一直出现转换的 ...
- 小程序图片转Base64,方法总结。
小程序图片转base64 前言:看了很多博客没一个能解决问题的,小程序社区也逛了个遍,依然找不到小程序图片在本地转base64的方法,凡事还得靠自己啊,接下来就把所有方法做个总结,作为一个野生程序员, ...
- java base64转字图片、图片转base64字符串
实现代码如下: @Slf4j public class Base64ToFileImageTools {/*** base64字符串转化成图片** @param imgData 图片编码* @para ...
- 针对文件流转Base64的操作
针对文件流转Base64的操作 package org.Util;import java.io.*; import java.net.URL; import java.net.URLConnectio ...
- java 图片 base64_java实现图片转base64字符串 java实现base64字符串转图片
java 图片转base64字符串.base64字符串转图片,具体内容如下 1. 图片转base64字符串: /** * base64编码字符串转换为图片 * @param imgStr base64 ...
- vue-quill-editor上传内容由于图片是base64的导致字符太长的问题解决
vue-quill-editor上传内容由于图片是base64的导致字符太长的问题解决 参考文章: (1)vue-quill-editor上传内容由于图片是base64的导致字符太长的问题解决 (2) ...
- java svgbase64转byte_java 图片进行base64 编码解码
java 图片进行base64 编码解码 刘振兴 代码分享 2017年06月07日 10555 2条评论 import sun.misc.BASE64Decoder; import sun.misc. ...
- java编写之jpg图片与base64编码之间的转换
/** * @author zyq * 将网络图片进行Base64位编码 * @param imgUrl * */ public static String encodeWebImageToBase6 ...
最新文章
- 记录一下mathtype输入任意形式矩阵
- (转)Windows7 “上帝模式”的原理
- 从AVL树的定义出发,一步步推导出旋转的方案。
- 数据结构 非线性结构 树 介绍及存储方法
- C#--WinForm项目主窗体设计
- windows安装ffmpeg
- SQL 性能优化梳理 —— 基本概念、创建时优化、查询时优化
- 关于模型验证那点事儿
- thinkphp 编辑器kindeditor
- new关键字对类成员的阻断
- 采集浏览器访问某网站时产生的流量,并保存为pcap文件
- c 关闭html,运行node Server.js后如何关闭?
- IDEA - 返回上一步,回到下一步 代码 快捷键
- C++求解一元二次方程
- 顶级在线图片处理工具Photopea
- 电子取证平台需求设计文档
- 【c语言】编程实现分段函数(适合初学者)
- maven-resources-plugin报红
- 第六届蓝桥杯大赛个人赛决赛(C/C++大学B组)
- 数字面板表行业调研报告 - 市场现状分析与发展前景预测