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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

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值