参考:

Java 工具箱 | 图片-Base64 互转

一、base 64简介

Data URLs 由如下四个部分组成,如文章开篇的
data:image/jpeg;base64,/9j/4AAQSkxxxxxxx

 data:[<mediatype>][;base64],<data>
  • data: : 协议固定前缀。
  • [<mediatype>] : 是一个 MIME type,比如 image/jpeg,你也可以在 "Incomplete list of MIME types"中找到一些类型。
  • [;base64] : 是编码方式。 这里用的 base64。
  • <data> : 编码后的字符串。

二、图片转Base64及Base64转图片

图片转Base64:

  • 将图片文件读取为数据流,并转化为byte数组
  • 将byte数组进行Base64编码,并转化为字符串
  • 根据文件的拓展名添加数据描述前缀

Base64转图片:

  • 将Base64字符串分成数据描述和数据Base64两个部分
  • 通过数据描述部分获得图片拓展名
  • 将数据Base64进行Base64解码,得到byte数组
  • 保存byte数组到文件,如果保存的文件路径提供完整的文件名称,则无需所得拓展名,否则使用所得拓展名作为图片文件拓展名

实现

// https://mvnrepository.com/artifact/commons-io/commons-io
implementation group: 'commons-io', name: 'commons-io', version: '2.6'
package com.baidu.translate;

import java.util.HashMap;
import java.util.Map;
import java.io.File;

public class ImageDataURISchemeMapper {
    private static Map<String, String> scheme2Extension = new HashMap<String, String>();
    private static Map<String, String> extension2Scheme = new HashMap<String, String>();

    static {
        initSchemeSupported();
    }

    public static String getScheme(String imageExtension) {
        if (imageExtension == null || imageExtension.isEmpty()) {
            return "";
        }
        String result = extension2Scheme.get(imageExtension.toLowerCase());
        return result == null ? "" : result;
    }

    public static String getScheme(File image) {
        if (image == null) {
            return "";
        }
        String name = image.getName();
        int lastPointIndex = name.lastIndexOf(".");
        return lastPointIndex < 0 ? "" : getScheme(name.substring(lastPointIndex + 1));
    }

    public static String getExtension(String dataUrlScheme) {
        return scheme2Extension.get(dataUrlScheme);
    }

    public static String getExtensionFromImageBase64(String imageBase64, String defaultExtension) {
        int firstComma = imageBase64.indexOf(",");
        if (firstComma < 0) {
            return defaultExtension;
        }
        return scheme2Extension.get(imageBase64.subSequence(0, firstComma + 1));
    }

    private static void initSchemeSupported() {
        addScheme("jpg", "data:image/jpg;base64,");
        addScheme("jpeg", "data:image/jpeg;base64,");
        addScheme("png", "data:image/png;base64,");
        addScheme("gif", "data:image/gif;base64,");
        addScheme("icon", "data:image/x-icon;base64,");
    }

    private static void addScheme(String extension, String dataUrl) {
        scheme2Extension.put(dataUrl, extension);
        extension2Scheme.put(extension, dataUrl);
    }
}
package com.baidu.translate;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

import org.apache.commons.io.IOUtils;

/**
 * 目标处理的图片类别有:png,jpg,jpeg
 * <p>
 * 参考:
 * <ul>
 *   <li>[浅析data:image/png;base64的应用](https://www.cnblogs.com/ECJTUACM-873284962/p/9245474.html)</li>
 *   <li>[Base64](https://zh.wikipedia.org/wiki/Base64)</li>
 *   <li>[Data URLs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs)
 * </ul>
 *
 * @author DoneSpeak
 * @date 2019/06/26
 */
public class ImageConvertBase64 {

    /**
     * 将图片文件转化为 byte 数组
     *
     * @param image 待处理图片文件
     * @return 图片文件转化为的byte数组
     */
    public static byte[] toBytes(File image) {
        try (FileInputStream input = new FileInputStream(image)) {
            // InputStream 的 available() 返回的值是该InputStream 在不被阻塞的情况下,一次可以读取到的数据长度。
            // byte[] imageBytes = new byte[input.available()];
            // input.read(imageBytes);
            return IOUtils.toByteArray(input);
        } catch (IOException e) {
            return null;
        }
    }

    public static String toBase64(byte[] bytes) {
        return bytesEncode2Base64(bytes);
    }

    /**
     * 将图片转化为 base64 的字符串
     *
     * @param image 待处理图片文件
     * @return 图片文件转化出来的 base64 字符串
     */
    public static String toBase64(File image) {
        return toBase64(image, false);
    }

    /**
     * 将图片转化为 base64 的字符串。如果<code>appendDataURLScheme</code>的值为true,则为图片的base64字符串拓展Data URL scheme。
     *
     * @param image               图片文件的路径
     * @param appendDataURLScheme 是否拓展 Data URL scheme 前缀
     * @return 图片文件转化为的base64字符串
     */
    public static String toBase64(File image, boolean appendDataURLScheme) {
        String imageBase64 = bytesEncode2Base64(toBytes(image));
        if (appendDataURLScheme) {
            imageBase64 = ImageDataURISchemeMapper.getScheme(image) + imageBase64;
        }
        return imageBase64;
    }

    private static String bytesEncode2Base64(byte[] bytes) {
        return new String(Base64.getEncoder().encode(bytes), StandardCharsets.UTF_8);
    }

    private static byte[] base64Decode2Bytes(String base64) {
        return Base64.getDecoder().decode(base64);
    }

    /**
     * 将byte数组恢复为图片文件
     *
     * @param imageBytes 图片文件的 byte 数组
     * @param imagePath  恢复的图片文件的保存地址
     * @return 如果生成成功,则返回生成的文件路径,此时结果为参数的<code>imagePath</code>。否则返回 null
     */
    public static File toImage(byte[] imageBytes, File imagePath) {
        if (!imagePath.getParentFile().exists()) {
            imagePath.getParentFile().mkdirs();
        }
        try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(imagePath))) {
            bos.write(imageBytes);
            return imagePath;
        } catch (IOException e) {
            return null;
        }
    }

    /**
     * 将base64字符串恢复为图片文件
     *
     * @param imageBase64 图片文件的base64字符串
     * @param imagePath   恢复的图片文件的保存地址
     * @return 如果生成成功,则返回生成的文件路径,此时结果为参数的<code>imagePath</code>。。否则返回 null
     */
    public static File toImage(String imageBase64, File imagePath) {
        // base64 字符串中没有 ","
        int firstComma = imageBase64.indexOf(",");
        if (firstComma >= 0) {
            imageBase64 = imageBase64.substring(firstComma + 1);
        }
        return toImage(base64Decode2Bytes(imageBase64), imagePath);
    }

    /**
     * 保存 imageBase64 到指定文件中。如果<code>fileName</code>含有拓展名,则直接使用<code>fileName</code>的拓展名。
     * 否则,如果 <code>imageBase64</code> 为Data URLs,则更具前缀的来判断拓展名。如果无法判断拓展名,则使用“png”作为默认拓展名。
     *
     * @param imageBase64 图片的base64编码字符串
     * @param dir         保存图片的目录
     * @param fileName    图片的名称
     * @return 如果生成成功,则返回生成的文件路径。否则返回 null
     */
    public static File toImage(String imageBase64, File dir, String fileName) {
        File imagePath = null;
        if (fileName.indexOf(".") < 0) {
            String extension = ImageDataURISchemeMapper.getExtensionFromImageBase64(imageBase64, "png");
            imagePath = new File(dir, fileName + "." + extension);
        } else {
            imagePath = new File(dir, fileName);
        }
        return toImage(imageBase64, imagePath);
    }
}

测试:

public class Base64Test {
    public static void main(String[] args) throws Exception {
        // 待处理的图片
        File inputFile = new File("/Users/tmk/Downloads/PicApiDemo-V3/test.jpg");
        String encode = ImageConvertBase64.toBase64(inputFile, true);
        System.out.println("encode === " + encode);
        
        File outputFile = new File("/Users/tmk/Downloads/PicApiDemo-V3/test_.jpg");
        File image = ImageConvertBase64.toImage(encode, outputFile);
        System.out.println("image = " + image.getAbsolutePath());
    }
}

网页可以验证图片base64是否正确

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Base64 Test</title>
</head>
<body>
<p>Data URLs Image:</p>
<!-- 常见的方式 -->
<!--<img src="/avatar/avatar.jpg">-->
<!-- 将 img.src 的内容复制粘贴到浏览器的输入框中,可以看到图片的内容 -->
<img src="data:image/jpg;base64,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/wDys6P/APJtH/Drn9uv/omf/la0f/5NoA+AKWvv7/h1z+3X/wBEz/8AK1o3/wAm0f8ADrn9uv8A6Jn/AOVnR/8A5NoA+AaSvv8A/wCHXP7df/RM/wDys6P/APJtH/Drn9uv/omf/la0f/5NoA+AKWvv7/h1z+3X/wBEz/8AK1o3/wAm0f8ADrn9uv8A6Jn/AOVnR/8A5NoA+AaSvv8A/wCHXP7df/RM/wDys6P/APJtQv8A8EwP25o5Y4H+GmHlztH9s6PztGT/AMvtAHwNS19/f8Ouf26/+iZ/+VrRv/k2j/h1z+3X/wBEz/8AKzo//wAm0AfANJX3/wD8Ouf26/8Aomf/AJWdH/8Ak2l/4dc/t1/9Ey/8rWj/APybQB//1v38ooooAKKKSgBaKKKACiikoAWiiigAoopKAFooooAKKKSgBaKKKACiikoAWiiigAoopKAFooooAKKKSgBaKKKACiikoAWiiigAoopKAFooooAKKKSgBaKKKACiikoAWiiigAoopKAFooooAKKKSgBaKKKACse9/wCQtp3/AG2/9BFbFY97/wAhbTv+23/oNA0bFFFFAgpMClpMUAf/1/38opKKAFooooAKKSigBaKKKACikooAWiiigAopKKAFooooAKKSigBaKKKACikooAWiiigAopKKAFooooAKKSigBaKKKACikooAWiiigAopKKAFooooAKKSigBaKKKACikooAWiiigAopKKAFooooAKKSigBax7z/kLad/22/8AQa2Kx73/AJC2nf8Abb/0GgaNiikooELRRRQB/9D9/KKKKACiikoAWiiigAoopKAFooooAKKKSgBaKKKACiikoAWiiigAoopKAFooooAKKKSgBaKKKACiikoAWiiigAoopKAFooooAKKKSgBaKKKACiikoAWiiigAoopKAFooooAKKKSgBaKKKACiikoAWiiigArHvf8AkLad/wBtv/QRWxWPe/8AIW07/tt/6DQNGxRRRQIKTApaTFAH/9H9/KKSigBaKKKACikooAWiiigAopKKAFooooAKKSigBaKKKACikooAWiiigAopKKAFooooAKKSigBaKQkAZJwKrvdwr0O4+1AFmis1r5v4VA+tRm7mPQgfhQBrUVj/AGqf+9+gpRdz+ufwoA16KyxeyDqoNTpfRMcMCp/OgC7RTFdXGVIP0p9ABRSUUALRRRQAUUlFAC0UUUAFFJRQAtFFFABRSUUALRRRQAUUlFAC1j3n/IW07/tt/wCg1sVj3v8AyFtO/wC23/oNA0bFFJRQIWiiigD/0v38ooooAKKKSgBaKKKACiikoAWiiigAoopKAFooooAKKKSgBaKKKACiikoAWiiigAooqN5FjXcxoAeTgZPAqlLeAcRjPv2qrPO8pwThfSq9AD3d5DlyTTKKKACiiigAxximYPpT6KAG/N0pdvc0tFACqWU5U4NXYrxhxIM+/eqNFAG6jrINyHIp9YSSPGdyHFasFwswx91h1FAFiiikoAWiiigAoopKAFooooAKKKSgBaKKKACiikoAWiiigArHvf8AkLad/wBtv/QRWxWPe/8AIW07/tt/6DQNGxRRRQIKTApaTFAH/9P9/KKSigBaKKKACikooAWiiigAopKKAFooooAKKSigBaKKKACikooAWiiigAopKCQBk8YoAZJIsSF2rIkleRtzGnTzGV8/wjgVBQAuc9aB1pKUdaAFK9+lM5z1pxAPOaZt5zmgB1FFFABRSZHSloATn1oz2NGT2owOvegBaKKKACgF1OQcEUUnNAGxbz+auG4cdRVmsFHZCHHBFbUUglQOv+TQBJRSUUALRRRQAUUlFAC0UUUAFFJRQAtFFFABRSUUALWPef8AIW07/tt/6DWxWPe/8hbTv+23/oNA0bFFJRQIWiiigD//1P38ooooAKKKSgBaKKKACiikoAWiiigAoopKAFooooAKKKSgBaKKKACiikoAWqN5LgCId+TV0kAEnoKxHcySFz3oAjopSOeKSgAopR156UEigBKKBzRQAUUUcd+KAGDrT6TC9s09eRk0ANo7Uj8Mgzt5P447VE06o6pOyRGQ/KpPzE9gB3zQBJmnA5pNopaACiiigBCe1WrSTy5MHo9VcAmlzgcUAdBRUFvJ5sQY9eh+oqegAoopKAFooooAKKKSgBaKKKACiikoAWiiigArHvf+Qtp3/bb/ANBFbFY97/yFtO/7bf8AoNA0bFFFFAgpMClpMUAf/9X9/KKSigBaKKKACikooAWiiigAopKKAFooooAKKSigBaKKKACikooAWiiigCrePthIHVuKxlOGrQv3+ZV9s1RAwaAHHr9KSiigAOcetRtnGcj86kIJGA233FZ2qXFzBpt1daXb+fcRxSyRRD70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oGjYooooEFJgUtJigD//0/38opKKAFooooAKKSigBaKKKACikooAWiiigAopKKAFooooAKKSigBaKKKACikooAWiiigCKWJJl2uKzJbWSNzIP3iN1Fa9FAHPgAoY35XsO4/GkPKbem3p71uSQRScsOfUdapSWLf8s2z7GgDPIAY+Wdo6A+1EUaRjZABHjdnAxkt1P1NWDaTj+H8qQQSqc460AV3CSo8Mq5A4HuCOa53wr4Q8O+CdIj0Hw1aC1sYWLCMdGz1PauraF17dab5Up6CgZESep5A+6voPT8aYyrwGBMY+bb6H0z6VcW3mbtUosZGGGIX9TQIw7HTrHS7RLSyhEUUZJAUbRknJ4HTrWtHBJKfk+76npWhHaRRgZG8j1q19KAK8NukXPVvWrFJRQAtFFFABRSUUALRRRQAUUlFAC0UUUAFFJRQAtFFFABRSUUALWPef8hbTv+23/oNbFY97/wAhbTv+23/oNA0bFFJRQIWiiigD/9T9/KKKKACiikoAWiiigAoopKAFooooAKKKSgBaKKKACiikoAWiiigAoopKAFooooAKKKSgBaKKKACiikoAWiiigAoopKAFooooAKKKSgBaKKKACiikoAWiiigAoopKAFooooAKKKSgBaKKKACiikoAWiiigArHvf8AkLad/wBtv/QRWxWPe/8AIW07/tt/6DQNGxRRRQIKTApaTFAH/9X9/KKSigBaKKKACikooAWiiigAopKKAFooooAKKSigBaKKKACikooAWvMLz41/CDTryfT7/wAaaPb3Ns7RSxvfQq6SIdrKwLZBBGCPWvT6+MviZD+xr4I8V3Gn/EjTbG01y9BvZQ1neTF/PZiXLQxumWYHjOfagD3X/he/wV/6HrRf/A+D/wCLo/4Xv8Ff+h60X/wPg/8Ai6/NXRte/ZST9oHXdR1KO1Pw9k0lEslNndmL7dmDdiIRmUHAl5KhevPIyvww139lGz+IfxCuPHUVq3h25u4G0ESWl5Koh3TGTYqRs6DmPhwD0x0NAH6haD8Vvhn4p1OPRvDfirTNUv5gxS3truKWVgg3MQqsScAEn2rv6+YfglZ/sx+JNXuvEfwW0+0fUNECpLPFbXNu8IuldQB56JncqsOM++Miu11n9on4KeH9VvND1nxZaWt/YSvBPEwk3RyRnaynCkZBGKAOp0D4meE/EnjTXvAO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WiiigAoopKAFooooAKKKSgBaKKKACiikoAWiiigAoopKAFooooAKKKSgBaKKKACiikoAWiiigAoopKAFooooAKKKSgBaKKKACiikoAWiiigAoopKAFooooAKx73/AJC2nf8Abb/0EVsVj3v/ACFtO/7bf+g0DRsUUUUCCkwKWkxQB//R/fyikooAWiiigAopKKAFooooAKKSigBaKKKACikooAWiiigAopKKAFooooAKKSigBaKKKACikooAWiiigAopKKAFooooAKKSigBaKKKACikooAWiiigAopKKAFooooAKKSigBaKKKACikooAWiiigAopKKAFrHvP+Qtp3/bb/wBBrYrHvf8AkLad/wBtv/QaBo2KKSigQtFFFAH/0v38pKWg0AA6UUDpRQAUlLQaAAdKKB0ooAKSloNAAOlFA6UUAFJS0GgAHSigdKKACkpaDQADpRQOlFABSUtBoAB0ooHSigApKWg0AA6UUDpRQAUlLQaAAdKKB0ooAKSloNAAOlFA6UUAFJS0GgAHSigdKKACkpaDQADpRQOlFABSUtBoAB0ooHSigApKWg0AA6UUDpRQAUlLQaAAdKx73/kLad/22/8AQa2B0rHvf+Qtp3/bb/0GhjRsUlLQaBAOlGBQOlFAH//Z">
</body>
</html>
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐