JAVA将图片(本地或者网络资源)转为Base64字符串,将base64字符串存储为本地图片
- 代码如下:
- package com.futuredata.dataservice.util;
- import java.io.ByteArrayOutputStream;
- 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 sun.misc.BASE64Decoder;
- import sun.misc.BASE64Encoder;
- @SuppressWarnings("restriction")
- public class Base64Utils {
- public static void main(String[] args) throws Exception {
- //本地图片地址
- String url = "C:/Users/Administrator/Desktop/628947887489084892.jpg";
- //在线图片地址
- String string = "http://bpic.588ku.com//element_origin_min_pic/17/03/03/7bf4480888f35addcf2ce942701c728a.jpg";
- String str = Base64Utils.ImageToBase64ByLocal(url);
- String ste = Base64Utils.ImageToBase64ByOnline(string);
- System.out.println(str);
- Base64Utils.Base64ToImage(str, "C:/Users/Administrator/Desktop/test1.jpg");
- Base64Utils.Base64ToImage(ste, "C:/Users/Administrator/Desktop/test2.jpg");
- }
- /**
- * 本地图片转换成base64字符串
- *
- * @param imgFile 图片本地路径
- * @return
- * @author ZHANGJL
- * @dateTime 2018-02-23 14:40:46
- */
- public static String ImageToBase64ByLocal(String imgFile) {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
- InputStream in = null;
- byte[] data = null;
- // 读取图片字节数组
- try {
- in = new FileInputStream(imgFile);
- 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字符串
- *
- * @param imgURL 图片线上路径
- * @return
- * @author ZHANGJL
- * @dateTime 2018-02-23 14:43:18
- */
- public static String ImageToBase64ByOnline(String imgURL) {
- ByteArrayOutputStream data = new ByteArrayOutputStream();
- try {
- // 创建URL
- URL url = new URL(imgURL);
- byte[] by = new byte[1024];
- // 创建链接
- HttpURLConnection conn = (HttpURLConnection) url.openConnection();
- conn.setRequestMethod("GET");
- conn.setConnectTimeout(5000);
- InputStream is = conn.getInputStream();
- // 将内容读取内存中
- int len = -1;
- while ((len = is.read(by)) != -1) {
- data.write(by, 0, len);
- }
- // 关闭流
- is.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- // 对字节数组Base64编码
- BASE64Encoder encoder = new BASE64Encoder();
- return encoder.encode(data.toByteArray());
- }
- /**
- * base64字符串转换成图片
- *
- * @param imgStr base64字符串
- * @param imgFilePath 图片存放路径
- * @return
- * @author ZHANGJL
- * @dateTime 2018-02-23 14:42:17
- */
- public static boolean Base64ToImage(String imgStr, String imgFilePath) { // 对字节数组字符串进行Base64解码并生成图片
- if (isEmpty(imgStr)) // 图像数据为空
- return false;
- BASE64Decoder decoder = new BASE64Decoder();
- try {
- // Base64解码
- byte[] b = decoder.decodeBuffer(imgStr);
- for (int i = 0; i < b.length; ++i) {
- if (b[i] < 0) {// 调整异常数据
- b[i] += 256;
- }
- }
- OutputStream out = new FileOutputStream(imgFilePath);
- out.write(b);
- out.flush();
- out.close();
- return true;
- } catch (Exception e) {
- return false;
- }
- }
- public static boolean isEmpty(String input) {
- return input == null || input.equals("");
- }
- }
JAVA将图片(本地或者网络资源)转为Base64字符串,将base64字符串存储为本地图片的更多相关文章
- JavaScript把项目本地的图片或者图片的绝对路径转为base64字符串、blob对象在上传
主题: JavaScript把项目本地的图片或者图片的绝对路径转为base64字符串.blob对象在上传. 用处: 从本地选择图片上传,如项目规定只能选择本项目文件夹下的图像上传为头像等. 主要思想: ...
- java 图片转base64字符串、base64字符串转图片
java 图片转base64字符串.base64字符串转图片 1. 图片转base64字符串: /** * base64编码字符串转换为图片 * @param imgStr base64编码字符串 * ...
- js将图片转为base64编码,以字符串传到后台存入数据库
(前台在中approve_edit.html中,后台不变) 链接参考:http://www.cnblogs.com/Strom-HYL/p/6782176.html 该链接文中并没有用到easyUI的 ...
- Java 生成在线二维码 以Base64返回前端、或者写入到本地磁盘
思路 现阶段遇到这样一个问题,在原有的产品上加入线下优惠券模式,用户领取优惠券以后,获取到一个唯一的ID作为领取凭证,但是在线下用扫码枪进行扫码的时候,总不能让人手动输入吧 于是乎就想出了一个办法,后 ...
- 图片转base64的几种场景(网络图片,本地图片,用户上传图片)
转载于博客园 https://www.cnblogs.com/zhangdiIT/p/7895903.html 写的很棒 推荐给大家 场景一:将用户本地上传的资源转化,即用户通过浏览器点击文件上传时 ...
- Android选择/拍照 剪裁 base64/16进制/byte上传图片+PHP接收图片
转载请注明出处:http://blog.csdn.net/iwanghang/article/details/65633129认为博文实用,请点赞,请评论,请关注.谢谢! ~ 老规矩,先上GIF动态图 ...
- Java 上传解压zip文件,并且解析文件里面的excel和图片
需求:上传一个zip文件,zip文件里面包含一个excel和很多图片,需要把excel里面的信息解析出来保存到表中,同时图片也转化成base64保存到数据库表中. PS:为了方便不同水平的开发人员阅读 ...
- 从入门到精通(分布式文件系统架构)-FastDFS,FastDFS-Nginx整合,合并存储,存储缩略图,图片压缩,Java客户端
导读 互联网环境中的文件如何存储? 不能存本地应用服务器 NFS(采用mount挂载) HDFS(适合大文件) FastDFS(强力推荐
- base64字符串转文件,以及ngImgCrop裁剪图片并上传保存到服务器示例
base64字符串是包含文件格式的文件字符串,例如:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAgAElE ...
随机推荐
- Docker Compose 模板文件 V2
模板文件是使用Compose的核心,默认模板文件名称为docker-compose.yml ,格式为YAML格式. 目录结构 [root@localhost ~]# tree /opt/compose ...
- 高并发之——深入解析Callable接口
本文纯干货,从源码角度深入解析Callable接口,希望大家踏下心来,打开你的IDE,跟着文章看源码,相信你一定收获不小. 1.Callable接口介绍 Callable接口是JDK1.5新增的泛型接 ...
- ElasticSearch相关概念与客户端操作
一.Elasticsearch概述 Elasticsearch是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document).然而它不仅仅是存储,还会索引(i ...
- 全志V3S 编译运行xboot笔记
目录 全志V3S 编译运行xboot笔记 1.目的 2.环境准备 3.下载 3.1 fel模式进入 3.2 sunxi-fel工具的使用 3.3 烧录 4.串口打印 5.总结 全志V3S 编译运行xb ...
- Linux中screen命令
screen是一款由GNU计划开发的用于命令行终端切换的自由软件.用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换.GNU Screen可以看作是窗口管理器的命令行界面版本.它提 ...
- Java BigDecimal toString() 的转换和输出
BigDecimal 的 toString() 方法将会把 BigDecimal 通过字符串的方式输出.这个方法将会在必要的时候使用指数进行输出. 具体的转换步骤是按照下面的步骤进行转换的: BigD ...
- 4.python流程控制语句介绍
流程控制语句分类 1).顺序结构 2).判断结构 3).循环结构 判断结构 特点:如果 ... 否则 ... 格式一: ① if 条件表 ...
- 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 ...
- 理解一致性Hash算法
简介 一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CAR ...
- 小白的linux笔记5:关于权限那些事
在设置smb时发现,目录的权限是个影响访问的大问题,还是得研究清楚. 关于文件权限 查看当前目录下文件和文件夹的权限状态:ls -l drwxrwxr--. 4 root root 4096 ...