java处理图片与base64编码互相转换
最近做项目遇到,需要在signature签名元素中添加签名的base64编码,网上找了js处理,出结果了,但编码不正确。之后用java代码处理(与在线转换http://imgbase64.duoshitong.com/结果一样),直接上代码,如下:
package ydysz.tools;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.commons.codec.binary.Base64;
import sun.misc.BASE64Decoder;
/**
* 将图片转换为Base64
* 将base64编码字符串解码成img图片
* @创建时间 2018-10-16 10:20
*/
public class Img2Base64Util {
public static void main(String[] args) {
String imgFile = "C:\\Users\\dellpc\\Desktop\\0094.png";// 待处理的图片
String imgbese = getImgStr(imgFile);
System.out.println(imgbese.length());
System.out.println(imgbese);
String imgFilePath = "C:\\Users\\dellpc\\Desktop\\0094.jpg";// 新生成的图片
generateImage(imgbese, imgFilePath);
}
/**
* 将图片转换成Base64编码
* @param imgFile 待处理图片
* @return
*/
public static String getImgStr(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();
}
return new String(Base64.encodeBase64(data));
}
/**
* 对字节数组字符串进行Base64解码并生成图片
* @param imgStr 图片数据
* @param imgFilePath 保存图片全路径地址
* @return
*/
public static boolean generateImage(String imgStr, String imgFilePath) {
//
if (imgStr == null) // 图像数据为空
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;
}
}
// 生成jpg图片
OutputStream out = new FileOutputStream(imgFilePath);
out.write(b);
out.flush();
out.close();
return true;
} catch (Exception e) {
return false;
}
}
}
base64转图片如图(本地桌面截图):
图片转base64效果如下:
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
java处理图片与base64编码互相转换相关推荐
- PHP 图片转base64编码 和 base64编码字符串转换成图片保存
1.图片转base64编码: /*图片转换为 base64格式编码*/ $img = 'uploads/01.png'; $base64_img = base64EncodeImage($img); ...
- JavaCV音视频开发宝典:实现Base64编码图片转换成图片文件通用转换器,以base64转png图片文件为例,其他图片格式也全部支持
<JavaCV音视频开发宝典>专栏目录导航 <JavaCV音视频开发宝典>专栏介绍和目录 前言 在上一章中https://eguid.blog.csdn.net/artic ...
- (Java) 解决使用 base64编码 保存到本地的图片出现破损的问题。 另:将base64编码图片上传至本地/OSS。
上周使用 base64 上传图片到OSS中的时候,发现保存的图片出现显示马赛克和图片破损打不开的情况.找了很久也没有出现问题,今天在找答案的时候,偶然间发现有个博主分享的内容完美的解决了我的问题(这里 ...
- PHP实现将base64编码字符串转换成图片示例
获取base64文件 $image="data:image/jpg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDB ...
- java中base64编码加密和android中base64编码加密不一样?base64编码解析错误?
在android的base64加密后得到: WwogIHsKICAgICJ0MSI6ICIwIiwKICAgICJ0MiI6ICIyNDM4NCIsCiAgICAidDMiOiAiIiwKICAgIC ...
- java svgbase64转byte_java 图片进行base64 编码解码
java 图片进行base64 编码解码 刘振兴 代码分享 2017年06月07日 10555 2条评论 import sun.misc.BASE64Decoder; import sun.misc. ...
- java,验证码base64编码到json字符串出显数据一行一行的问题,关于base64编码函数解释
因为在写项目图片验证码时遇到: 一个json解析错误. Error: 在第1行发生解析错误 : {"code":"/9j/4AAQSkZJRgABAgA此处缺少'STRI ...
- Base64编码 - Java加密与安全
BASE64编码什么是Base64编码?它是一种把二进制的数据用文本表示的编码算法.String base64Encoder(byte[] data)byte[]{0xe4,0xb8,0xad} -& ...
- 开发中Base64编码运用
一.Base64编码原理Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,其编码原理如下: 1. 统计需要编辑的字符串长度,把需要编译的字符串按每3个为一组,长度整除3的在字符串后面加 ...
最新文章
- 关于面试的部分内容总结#1
- 第一篇:Mysql数据类型
- 大型分布式系统需要考虑的问题
- linux如何判断网线插入_斜口钳和网线钳制作网线!
- FusionInsight LibrA V100R002C80SPC300安装指南
- dp主机_MODBUS 和 PROFIBUS-DP 协议有什么区别
- 使用 做签名的post_基础实操|使用jmeter对聊天软件进行接口测试
- 初入java行业,环境你可知如何配置
- PC端与虚拟机内容拷贝
- 雷蛇鼠标垫真假区分_您真的需要鼠标垫吗?
- 从重大事件保障,看华为如何打造一流保障体系
- B站视频缓存 音频和视频批量合并
- 录像机人机界面蓝屏怎么处理
- AI开发者大会:2020年7月3日和7月4日CSDN重磅举办《百万人学AI》大会议程及其对应视频回放链接
- jQuery 遍历 - closest() 方法 is()方法
- 带轮轮毂长度l和带轮宽b表_A型V带轮的轮缘宽B,轮毂孔径D和轮毂长L.doc
- 星巴克猫爪杯开售遭哄抢 淘宝同款比比皆是真假难辨
- MDF智能合约靠谱吗?
- 第7章 路由器配置及使用
- Qt小程序之QQ登录窗口输入框控件
热门文章
- windows script host是什么意思,windows based script host
- 基于matlab的SOM自组织网络仿真
- time秒和年月日时分秒的转化
- java 计算当天剩余多少秒
- jtag、在线仿真器
- varargin、varargout、nargin和nargout的使用方法
- python实现快速欧式聚类FEC:fast-euclidean-clustering
- oracle找不到 dba_tables,不经意发现的dba_objects和dba_tables中的细节
- 光纤模式分布 matlab,matlab计算单模光纤模式分布(公布源代码及参考文献)
- 计算机专业自我介绍结尾,计算机专业面试自我介绍怎么结尾