Java模块 -- 从网络中读取图片 转换成Base64字符串
2016-08-23 22:46
986 查看
有一个小功能 , 从网络上读取图片 , 然后将图片转换为String类型,发给别人.
废话不多说了,直接上代码.
这里附上完整代码....有个jar包 , 不是那么好找,已经放在zip包中了....
Java 从网络中读取图片 转换成Base64字符串
我本地测试的时候,用的是Tomcat服务器.
对了,这里发现一个小bug,要是在try..catch之后,
直接finally , 将HttpSRLConnection关闭的话,读取的InputStream 就是空了...打断点看了也没想明白...欢迎大家交流.
然后我想了一下 , 将HttpURLConnection httpUrl 设置为成员变量 , 放在外面 , 每次返回结果之后 , 在调用close方法 , 单独讲这个连接关闭了.
废话不多说了,直接上代码.
这里附上完整代码....有个jar包 , 不是那么好找,已经放在zip包中了....
Java 从网络中读取图片 转换成Base64字符串
我本地测试的时候,用的是Tomcat服务器.
对了,这里发现一个小bug,要是在try..catch之后,
直接finally , 将HttpSRLConnection关闭的话,读取的InputStream 就是空了...打断点看了也没想明白...欢迎大家交流.
然后我想了一下 , 将HttpURLConnection httpUrl 设置为成员变量 , 放在外面 , 每次返回结果之后 , 在调用close方法 , 单独讲这个连接关闭了.
package com.readerpicture; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import Decoder.BASE64Decoder; import Decoder.BASE64Encoder; public class Controller { private HttpURLConnection httpUrl = null; public static void main(String[] args) throws Exception { Controller c = new Controller(); String url = "http://localhost:8088/tomcat.png"; String path = "D:/0000.JPG"; InputStream in = c.saveToFile(url); //从URL读取图片 String str = c.GetImageStrByInPut(in); //读取输入流,转换为Base64字符 System.out.println(str); generateImage(str, path); //将Base64字符转换为图片 c.closeHttpConn(); } public void closeHttpConn(){ httpUrl.disconnect(); } /** * 从URL中读取图片,转换成流形式. * @param destUrl * @return */ public InputStream saveToFile(String destUrl){ URL url = null; InputStream in = null; try{ url = new URL(destUrl); httpUrl = (HttpURLConnection) url.openConnection(); httpUrl.connect(); httpUrl.getInputStream(); in = httpUrl.getInputStream(); return in; }catch (Exception e) { e.printStackTrace(); } return null; } /** * 读取输入流,转换为Base64字符串 * @param input * @return */ public String GetImageStrByInPut(InputStream input) { byte[] data = null; // 读取图片字节数组 try { data = new byte[input.available()]; input.read(data); input.close(); } catch (IOException e) { e.printStackTrace(); } // 对字节数组Base64编码 BASE64Encoder encoder = new BASE64Encoder(); return encoder.encode(data);// 返回Base64编码过的字节数组字符串 } /** * 图片转化成base64字符串 将图片文 件转化为字节数组字符串,并对其进行Base64编码处理 * * @return */ public static String GetImageStr(File file) { InputStream in = null; byte[] data = null; // 读取图片字节数组 try { in = new FileInputStream(file); data = new byte[in.available()]; in.read(data); in.close(); } catch (IOException e) { e.printStackTrace(); } // 对字节数组Base64编码 BASE64Encoder encoder = new BASE64Encoder(); return encoder.encode(data);// 返回Base64编码过的字节数组字符串 } /** * base64字符串转化成图片 对字节数组字符串进行Base64解码并生成图片 * * @param imgStr * 数据内容(字符串) * @param path * 输出路径 * @return */ public static boolean generateImage(String imgStr, String path) { if (imgStr == null) // 图像数据为空 return false; BASE64Decoder decoder = new BASE64Decoder(); try { byte[] b = decoder.decodeBuffer(imgStr);// Base64解码 for (int i = 0; i < b.length; ++i) { if (b[i] < 0) {// 调整异常数据 b[i] += 256; } } // 生成jpeg图片 OutputStream out = new FileOutputStream(path); out.write(b); out.flush(); out.close(); return true; } catch (Exception e) { return false; } } }
相关文章推荐
- java-从网络URL中读取图片转换成Base64字符串-靠谱版
- java实现网络图片转换为base64字符串
- java读取写入图片文件、byte[]、base64字符串、16进制字符串相互转换
- Java实现base64图片转换为base64字符串。base64字符串转换图片 之间的互相转换,并保存在本地。
- Java实现头像截取裁剪后图片保存,获取的是base64数据,怎么转换为图片并保存到数据库。并读取出来。
- java实现图片与base64字符串之间的转换
- java实现图片与base64字符串之间的转换
- java实现图片与base64字符串之间的转换(不适用SUN公司的sun.misc.BASE64Encoder)
- 校验出生日期,校验身份证格式,校验会员账户:9开头数字,校验手机号码是否合法,判断字符串中的url是否都是图片格式字符串,通过图片url读取图片并将图片转换成base64编码
- java 实现 :Base64字符串 和 图片 之间的相互转换
- java实现图片与base64字符串之间的转换
- java网络图片和二进制字符串间的转换
- 实例详解Java实现图片与base64字符串之间的转换
- JAVA将图片(本地或者网络资源)转为Base64字符串
- java网络图片与二进制字符串相互转换
- java实现图片与base64字符串之间的转换
- 将图片转换为base64字符串Java代码(未测试)
- java图片与base64字符串之间的转换
- 在 Java 中把 .NET 使用 Convert.ToBase64String 转换出的 Base64 字符串还原成图片