1. 代码如下:
  1. package com.futuredata.dataservice.util;
  2.  
  3. import java.io.ByteArrayOutputStream;
  4. import java.io.FileInputStream;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8. import java.io.OutputStream;
  9. import java.net.HttpURLConnection;
  10. import java.net.URL;
  11.  
  12. import sun.misc.BASE64Decoder;
  13. import sun.misc.BASE64Encoder;
  14.  
  15. @SuppressWarnings("restriction")
  16. public class Base64Utils {
  17.  
  18. public static void main(String[] args) throws Exception {
  19.  
  20. //本地图片地址
  21. String url = "C:/Users/Administrator/Desktop/628947887489084892.jpg";
  22. //在线图片地址
  23. String string = "http://bpic.588ku.com//element_origin_min_pic/17/03/03/7bf4480888f35addcf2ce942701c728a.jpg";
  24.  
  25. String str = Base64Utils.ImageToBase64ByLocal(url);
  26.  
  27. String ste = Base64Utils.ImageToBase64ByOnline(string);
  28.  
  29. System.out.println(str);
  30.  
  31. Base64Utils.Base64ToImage(str, "C:/Users/Administrator/Desktop/test1.jpg");
  32.  
  33. Base64Utils.Base64ToImage(ste, "C:/Users/Administrator/Desktop/test2.jpg");
  34. }
  35.  
  36. /**
  37. * 本地图片转换成base64字符串
  38. *
  39. * @param imgFile 图片本地路径
  40. * @return
  41. * @author ZHANGJL
  42. * @dateTime 2018-02-23 14:40:46
  43. */
  44. public static String ImageToBase64ByLocal(String imgFile) {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
  45.  
  46. InputStream in = null;
  47. byte[] data = null;
  48.  
  49. // 读取图片字节数组
  50. try {
  51. in = new FileInputStream(imgFile);
  52.  
  53. data = new byte[in.available()];
  54. in.read(data);
  55. in.close();
  56. } catch (IOException e) {
  57. e.printStackTrace();
  58. }
  59. // 对字节数组Base64编码
  60. BASE64Encoder encoder = new BASE64Encoder();
  61.  
  62. return encoder.encode(data);// 返回Base64编码过的字节数组字符串
  63. }
  64.  
  65. /**
  66. * 在线图片转换成base64字符串
  67. *
  68. * @param imgURL 图片线上路径
  69. * @return
  70. * @author ZHANGJL
  71. * @dateTime 2018-02-23 14:43:18
  72. */
  73. public static String ImageToBase64ByOnline(String imgURL) {
  74. ByteArrayOutputStream data = new ByteArrayOutputStream();
  75. try {
  76. // 创建URL
  77. URL url = new URL(imgURL);
  78. byte[] by = new byte[1024];
  79. // 创建链接
  80. HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  81. conn.setRequestMethod("GET");
  82. conn.setConnectTimeout(5000);
  83. InputStream is = conn.getInputStream();
  84. // 将内容读取内存中
  85. int len = -1;
  86. while ((len = is.read(by)) != -1) {
  87. data.write(by, 0, len);
  88. }
  89. // 关闭流
  90. is.close();
  91. } catch (IOException e) {
  92. e.printStackTrace();
  93. }
  94. // 对字节数组Base64编码
  95. BASE64Encoder encoder = new BASE64Encoder();
  96. return encoder.encode(data.toByteArray());
  97. }
  98.  
  99. /**
  100. * base64字符串转换成图片
  101. *
  102. * @param imgStr base64字符串
  103. * @param imgFilePath 图片存放路径
  104. * @return
  105. * @author ZHANGJL
  106. * @dateTime 2018-02-23 14:42:17
  107. */
  108. public static boolean Base64ToImage(String imgStr, String imgFilePath) { // 对字节数组字符串进行Base64解码并生成图片
  109.  
  110. if (isEmpty(imgStr)) // 图像数据为空
  111. return false;
  112.  
  113. BASE64Decoder decoder = new BASE64Decoder();
  114. try {
  115. // Base64解码
  116. byte[] b = decoder.decodeBuffer(imgStr);
  117. for (int i = 0; i < b.length; ++i) {
  118. if (b[i] < 0) {// 调整异常数据
  119. b[i] += 256;
  120. }
  121. }
  122.  
  123. OutputStream out = new FileOutputStream(imgFilePath);
  124. out.write(b);
  125. out.flush();
  126. out.close();
  127.  
  128. return true;
  129. } catch (Exception e) {
  130. return false;
  131. }
  132.  
  133. }
  134.  
  135. public static boolean isEmpty(String input) {
  136. return input == null || input.equals("");
  137. }
  138.  
  139. }

JAVA将图片(本地或者网络资源)转为Base64字符串,将base64字符串存储为本地图片的更多相关文章

  1. JavaScript把项目本地的图片或者图片的绝对路径转为base64字符串、blob对象在上传

    主题: JavaScript把项目本地的图片或者图片的绝对路径转为base64字符串.blob对象在上传. 用处: 从本地选择图片上传,如项目规定只能选择本项目文件夹下的图像上传为头像等. 主要思想: ...

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

    java 图片转base64字符串.base64字符串转图片 1. 图片转base64字符串: /** * base64编码字符串转换为图片 * @param imgStr base64编码字符串 * ...

  3. js将图片转为base64编码,以字符串传到后台存入数据库

    (前台在中approve_edit.html中,后台不变) 链接参考:http://www.cnblogs.com/Strom-HYL/p/6782176.html 该链接文中并没有用到easyUI的 ...

  4. Java 生成在线二维码 以Base64返回前端、或者写入到本地磁盘

    思路 现阶段遇到这样一个问题,在原有的产品上加入线下优惠券模式,用户领取优惠券以后,获取到一个唯一的ID作为领取凭证,但是在线下用扫码枪进行扫码的时候,总不能让人手动输入吧 于是乎就想出了一个办法,后 ...

  5. 图片转base64的几种场景(网络图片,本地图片,用户上传图片)

    转载于博客园 https://www.cnblogs.com/zhangdiIT/p/7895903.html 写的很棒  推荐给大家 场景一:将用户本地上传的资源转化,即用户通过浏览器点击文件上传时 ...

  6. Android选择/拍照 剪裁 base64/16进制/byte上传图片+PHP接收图片

    转载请注明出处:http://blog.csdn.net/iwanghang/article/details/65633129认为博文实用,请点赞,请评论,请关注.谢谢! ~ 老规矩,先上GIF动态图 ...

  7. Java 上传解压zip文件,并且解析文件里面的excel和图片

    需求:上传一个zip文件,zip文件里面包含一个excel和很多图片,需要把excel里面的信息解析出来保存到表中,同时图片也转化成base64保存到数据库表中. PS:为了方便不同水平的开发人员阅读 ...

  8. 从入门到精通(分布式文件系统架构)-FastDFS,FastDFS-Nginx整合,合并存储,存储缩略图,图片压缩,Java客户端

    导读 互联网环境中的文件如何存储? 不能存本地应用服务器 NFS(采用mount挂载) HDFS(适合大文件) FastDFS(强力推荐

  9. base64字符串转文件,以及ngImgCrop裁剪图片并上传保存到服务器示例

    base64字符串是包含文件格式的文件字符串,例如:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAgAElE ...

随机推荐

  1. Docker Compose 模板文件 V2

    模板文件是使用Compose的核心,默认模板文件名称为docker-compose.yml ,格式为YAML格式. 目录结构 [root@localhost ~]# tree /opt/compose ...

  2. 高并发之——深入解析Callable接口

    本文纯干货,从源码角度深入解析Callable接口,希望大家踏下心来,打开你的IDE,跟着文章看源码,相信你一定收获不小. 1.Callable接口介绍 Callable接口是JDK1.5新增的泛型接 ...

  3. ElasticSearch相关概念与客户端操作

    一.Elasticsearch概述 Elasticsearch是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document).然而它不仅仅是存储,还会索引(i ...

  4. 全志V3S 编译运行xboot笔记

    目录 全志V3S 编译运行xboot笔记 1.目的 2.环境准备 3.下载 3.1 fel模式进入 3.2 sunxi-fel工具的使用 3.3 烧录 4.串口打印 5.总结 全志V3S 编译运行xb ...

  5. Linux中screen命令

    screen是一款由GNU计划开发的用于命令行终端切换的自由软件.用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换.GNU Screen可以看作是窗口管理器的命令行界面版本.它提 ...

  6. Java BigDecimal toString() 的转换和输出

    BigDecimal 的 toString() 方法将会把 BigDecimal 通过字符串的方式输出.这个方法将会在必要的时候使用指数进行输出. 具体的转换步骤是按照下面的步骤进行转换的: BigD ...

  7. 4.python流程控制语句介绍

    流程控制语句分类 1).顺序结构 2).判断结构 3).循环结构 判断结构 特点:如果 ... 否则 ... 格式一:                 ①                 if 条件表 ...

  8. Openshift V3系列各组件版本

    Openshift V3.* 系列各组件版本 Components 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.9 3.10 3.11 Core Components dock ...

  9. 理解一致性Hash算法

    简介 一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CAR ...

  10. 小白的linux笔记5:关于权限那些事

    在设置smb时发现,目录的权限是个影响访问的大问题,还是得研究清楚. 关于文件权限 查看当前目录下文件和文件夹的权限状态:ls -l drwxrwxr--.  4 root root    4096 ...