最近做项目遇到,需要在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编码互相转换相关推荐

  1. PHP 图片转base64编码 和 base64编码字符串转换成图片保存

    1.图片转base64编码: /*图片转换为 base64格式编码*/ $img = 'uploads/01.png'; $base64_img = base64EncodeImage($img); ...

  2. JavaCV音视频开发宝典:实现Base64编码图片转换成图片文件通用转换器,以base64转png图片文件为例,其他图片格式也全部支持

    <JavaCV音视频开发宝典>专栏目录导航 <JavaCV音视频开发宝典>专栏介绍和目录 ​ 前言 在上一章中https://eguid.blog.csdn.net/artic ...

  3. (Java) 解决使用 base64编码 保存到本地的图片出现破损的问题。 另:将base64编码图片上传至本地/OSS。

    上周使用 base64 上传图片到OSS中的时候,发现保存的图片出现显示马赛克和图片破损打不开的情况.找了很久也没有出现问题,今天在找答案的时候,偶然间发现有个博主分享的内容完美的解决了我的问题(这里 ...

  4. PHP实现将base64编码字符串转换成图片示例

    获取base64文件 $image="data:image/jpg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDB ...

  5. java中base64编码加密和android中base64编码加密不一样?base64编码解析错误?

    在android的base64加密后得到: WwogIHsKICAgICJ0MSI6ICIwIiwKICAgICJ0MiI6ICIyNDM4NCIsCiAgICAidDMiOiAiIiwKICAgIC ...

  6. java svgbase64转byte_java 图片进行base64 编码解码

    java 图片进行base64 编码解码 刘振兴 代码分享 2017年06月07日 10555 2条评论 import sun.misc.BASE64Decoder; import sun.misc. ...

  7. java,验证码base64编码到json字符串出显数据一行一行的问题,关于base64编码函数解释

    因为在写项目图片验证码时遇到: 一个json解析错误. Error: 在第1行发生解析错误 : {"code":"/9j/4AAQSkZJRgABAgA此处缺少'STRI ...

  8. Base64编码 - Java加密与安全

    BASE64编码什么是Base64编码?它是一种把二进制的数据用文本表示的编码算法.String base64Encoder(byte[] data)byte[]{0xe4,0xb8,0xad} -& ...

  9. 开发中Base64编码运用

    一.Base64编码原理Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,其编码原理如下: 1. 统计需要编辑的字符串长度,把需要编译的字符串按每3个为一组,长度整除3的在字符串后面加 ...

最新文章

  1. 关于面试的部分内容总结#1
  2. 第一篇:Mysql数据类型
  3. 大型分布式系统需要考虑的问题
  4. linux如何判断网线插入_斜口钳和网线钳制作网线!
  5. FusionInsight LibrA V100R002C80SPC300安装指南
  6. dp主机_MODBUS 和 PROFIBUS-DP 协议有什么区别
  7. 使用 做签名的post_基础实操|使用jmeter对聊天软件进行接口测试
  8. 初入java行业,环境你可知如何配置
  9. PC端与虚拟机内容拷贝
  10. 雷蛇鼠标垫真假区分_您真的需要鼠标垫吗?
  11. 从重大事件保障,看华为如何打造一流保障体系
  12. B站视频缓存 音频和视频批量合并
  13. 录像机人机界面蓝屏怎么处理
  14. AI开发者大会:2020年7月3日和7月4日CSDN重磅举办《百万人学AI》大会议程及其对应视频回放链接
  15. jQuery 遍历 - closest() 方法 is()方法
  16. 带轮轮毂长度l和带轮宽b表_A型V带轮的轮缘宽B,轮毂孔径D和轮毂长L.doc
  17. 星巴克猫爪杯开售遭哄抢 淘宝同款比比皆是真假难辨
  18. MDF智能合约靠谱吗?
  19. 第7章 路由器配置及使用
  20. Qt小程序之QQ登录窗口输入框控件

热门文章

  1. windows script host是什么意思,windows based script host
  2. 基于matlab的SOM自组织网络仿真
  3. time秒和年月日时分秒的转化
  4. java 计算当天剩余多少秒
  5. jtag、在线仿真器
  6. varargin、varargout、nargin和nargout的使用方法
  7. python实现快速欧式聚类FEC:fast-euclidean-clustering
  8. oracle找不到 dba_tables,不经意发现的dba_objects和dba_tables中的细节
  9. 光纤模式分布 matlab,matlab计算单模光纤模式分布(公布源代码及参考文献)
  10. 计算机专业自我介绍结尾,计算机专业面试自我介绍怎么结尾