base64和图片的相互转换
package czc.superzig.modular.utils; import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder; import java.io.*;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future; import org.apache.commons.lang3.StringUtils; import com.alibaba.fastjson.JSONObject;
import com.sun.jna.NativeLong; import cn.hutool.core.codec.Base64Decoder;
import czc.superzig.common.operatingtable.base.entity.Result;
import czc.superzig.modular.system.operatingtable.entity.CameraBlock;
import czc.superzig.modular.utils.camera.DemoCapture;
import groovyjarjarantlr.collections.List; public class Base64 {
private static final String separator = "/";
private final static ExecutorService executor = Executors.newCachedThreadPool();//启用多线程 //获取base64字符串
public static String encodeBase64(String filaName,boolean isSafe) {
if(StringUtils.isBlank(filaName)){
throw new NullPointerException();
}
InputStream in = null;
byte[] data = null;
String encodedText=null;
//读取图片字节数组
try {
in = new BufferedInputStream(new FileInputStream(filaName));
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
//对字节数组Base64编码 if(isSafe){
java.util.Base64.Encoder encoder = java.util.Base64.getUrlEncoder();
encodedText = encoder.encodeToString(data);
}else{
BASE64Encoder encoder = new BASE64Encoder();
encodedText=encoder.encode(data);
encodedText=encodedText.replaceAll("[\\s*\t\n\r]", "");
}
return encodedText;
} //解析base64
public static String decodeBase64(String base64,String filePath,String suffix,boolean isSafe){
if(StringUtils.isBlank(base64)||StringUtils.isBlank(filePath)||StringUtils.isBlank(suffix)){
throw new NullPointerException();
}
OutputStream out=null;
String fileName=null;
try {
byte[] b=new byte[2048];
if(isSafe){
java.util.Base64.Decoder decoder = java.util.Base64.getUrlDecoder();
b = decoder.decode(base64);
}else{
BASE64Decoder decoder = new BASE64Decoder();
b = decoder.decodeBuffer(base64.substring(base64.indexOf(",") + 1));
}
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {// 调整异常数据
b[i] += 256;
}
}
File file=new File(filePath);
if(!file.exists()){
file.mkdirs();
}
fileName=filePath+System.currentTimeMillis()+"."+suffix;
out = new BufferedOutputStream(new FileOutputStream(fileName));
out.write(b);
out.flush();
}catch (Exception e) { }finally {
if(out!=null){
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
} }
} return fileName;
}
}
base64和图片的相互转换的更多相关文章
- c# 中base64字符串和图片的相互转换
c#base64字符串转图片用到了bitmap类,封装 GDI+ 位图,此位图由图形图像及其特性的像素数据组成. Bitmap 是用于处理由像素数据定义的图像的对象. 具体bitmap类是什么可以自己 ...
- 页面以base64输出图片
<% //读取文件路径,输出base64 编码 System.IO.FileStream stream = System.IO.File.OpenRead(ViewBag.FilePath); ...
- base64和图片的转换
/// <summary> /// base64转图片 /// </summary> /// <param name="strBase64">& ...
- 通过data:image/png;base64把图片直接写在src里
从网上下了个源文件查看时候发现了引用图片的地址不是在本地上的,而是后面跟了一大串字符data:image/png;base64...查了一下资料分析如下: 关于用base64存储图片 网页上有些图片的 ...
- c# API接收Base64转图片
/// <summary> /// API接收Base64转图片 /// </summary> /// <param name="Img">图片 ...
- base64加密图片处理
场景:下载html中内嵌的base64加密图片 举个例子,博客园的插入图片有两种方式,一是引用图片链接,二是直接粘贴2进制图片文件.以第二种方式的图片则是以base64加密的方式内嵌在html页面中. ...
- 前端上传 base64 编码图片到七牛云存储
参考文档 如何上传base64编码图片到七牛云 调试过程 文档中分别有 java 和 html 的 demo,可以根据文档示例调试. 下面是我调试的过程,可以作为参考,特别注意的是,如果需要给文件起名 ...
- 在HTML中显示base64 img 图片
base64的图片可以直接显示在网页上面 <img src=“data:image/png;base64,******************************************** ...
- 利用base64展示图片
其实很简单,格式如下: <img src="data:image/jpg;base64,具体的编码值" /> 支持的类型有: data:,文本数据 data:text/ ...
随机推荐
- TCP和UDP的一些注意事项
TCP的一些注意事项 1. tcp服务器一般情况下都需要绑定,否则客户端找不到这个服务器,更无法链接到服务器 2. tcp客户端一般不绑定,因为是主动链接服务器,所以只要确定好服务器的ip.port等 ...
- Java - Test - TestNG: testng.xml 元素 class
Java - Test - TestNG: testng.xml 元素 class 1. 概述 class 相关的元素 classes class methods exclude include 2. ...
- logstash output到kafka记录与总结( No entry found for connection 2)
简述 本文记录logstash的output配置为kafka的过程.这里是简单的例子,输入为stdin,本文主要目的是为了记录在这次配置过程中遇到的问题和解决的过程及总结. 关于kafka集群的搭建可 ...
- CentOS6.5_x64卸载系统原有MySQL
1.查看系统是否存在MySQL的版本 rpm -qa | grep mysql 2.删除老版本的开头文件和库(rpm -e --nodeps XXX) rpm -e --nodeps mysql-5. ...
- SQL常用语句和函数
从一个表中选取数据插入到另一个表中: select column_name(s) into new_table_name from old_table_name --new_table_name表不必 ...
- nginx 解决 connect() failed (111: Connection refused) while connecting to upstream,
嗯哼,刚装了个ubuntu的lnmp,我的天啊,踩的坑比我脂肪还多了 比如刚装完的时候访问显示502, 也不知道什么问题,就去看了一下nginx日志 /var/log/nginx/error.log ...
- spring security 方法权限使用
前面我们讲过了使用<security:intercept-url>配置url的权限访问,下面我们讲解一下基于方法的权限使用默认情况下, Spring Security 并不启用方法级的安全 ...
- C++学会STL
1.1 泛型程序设计简介 泛型程序设计,简单地说就是使用模板的程序设计法.将一些常用的数据结构(比如链表,数组,二叉树)和算法(比如排序,查找)写成模板,以后则不论数据结构里放的是什么对象,算法针对什 ...
- UIResponder的API
@property(nonatomic, readonly) UIResponder *nextResponder; 返回响应者链中的下一个响应者,或者nil如果没有下一个响应者. @property ...
- 「题解」「JOISC 2014 Day1」历史研究
目录 题目 考场思考 思路分析及标程 题目 点这里 考场思考 大概是标准的莫队吧,离散之后来一个线段树加莫队就可以了. 时间复杂度 \(\mathcal O(n\sqrt n\log n)\) . 然 ...