java中对base64与图片的互转实现

简介: 这只能算是一个小实现吧 ,也不算什么难点,就是加强下记忆,后续查找方便点而已,当然也有可能给你提供个小灵感啥的,那就再好不过了。

项目中有使用到对图片进行base64转码,然后解码保存的小功能,这边先记录下实现,网上的方案超级多,我也是从上面整理的,拿下来测试下。

想到java的实现后,又想到自己小博客好像也有对base64进行转化存储的功能,赶紧也贴上来,两遍对照下,反正都用得着。

java 代码

package test;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/***
 * 测试转化图片为base64字符串
 * @author Administrator
 *
 */
public class Base64 {

    //转化图片为base64
    public static String convertStr(String filePath) throws Exception {
        InputStream is = new FileInputStream(filePath);
        byte[] data = null;
        data = new byte[is.available()];
        is.read(data);
        is.close();
        return java.util.Base64.getEncoder().encodeToString(data);
    }
    //转化字符串为图片
    public static String convertImg(String base64,String filePath) throws Exception {
        byte[] arr = java.util.Base64.getDecoder().decode(base64);
        for (int i = 0; i < arr.length; ++i) {
            if (arr[i] < 0) {// 调整异常数据
                arr[i] += 256;
            }
        }
        OutputStream out = new FileOutputStream(filePath);
        out.write(arr);
        out.flush();
        out.close();

        return filePath;
    }
    
    public static void main(String[] args) throws Exception {
        String filePath = "d:/ttt/a.png";
//        System.out.println(filePath);
//        String str = convertStr(filePath);
//        System.out.println(str);
        String ab = "--- 这个是转码后的base64";//贴上后发现有点长,就去掉了
        String filePath2 = "d:/ttt/b.png";
        convertImg(ab,filePath2);
    }
}

nodejs 代码

//实现nodejs版本图片base64互转
let filePath = 'd:/ttt/a.png';
let filePath2 = 'd:/ttt/c.png';
let fs = require('fs');

function convertImg(filePath){
    //读取图片,并转为base64
    return new Promise((resolve,reject)=>{
        let rs = fs.createReadStream(filePath);
        let chunks = [];
        let size = 0;
        rs.on('data',chunk=>{
            chunks.push(chunk);
            size += chunk.length;
        });
        rs.on('error',()=>{
            reject('读取错误');
        })
        rs.on('close',()=>{
            let buffer = Buffer.concat(chunks,size);
            let baseStr = buffer.toString('base64');
            resolve(baseStr);
        });
    });
}
function convertStr(str,filePath){
    return new Promise((resolve,reject)=>{
        var base64Data = str.replace(/^data:image\/\w+;base64,/, "");
        var dataBuffer = new Buffer(base64Data, 'base64');
        fs.writeFile(filePath,dataBuffer,function(err){
            if(err){
                reject(err);
            }else{
                resolve(true);
            }
        });
    });
}

convertImg(filePath).then((basestr)=>{
    return convertStr(basestr,filePath2);
})
.then(flag=>{
    console.log(flag);
})
.catch(err=>{
    console.log(err);
})

最后简单贴个截图看下

a.png - b.png - c.png


实现都不算是复杂,至于效率神马的..我也没测,估摸着相差应该也不会很大(额.也不一定。我瞎猜的)
以上是java和nodejs 对图片和base64两种格式的相互转化实现。

相关文章
|
6天前
|
Java
Java-FileInputStream和FileOutputStream的使用,txt文件及图片文件的拷贝
这篇文章介绍了Java中FileInputStream和FileOutputStream的使用,包括如何读取和写入txt文件以及如何拷贝图片文件。
Java-FileInputStream和FileOutputStream的使用,txt文件及图片文件的拷贝
|
9天前
|
存储 缓存 监控
Java——图片文件位于 bin 目录下,下载新图片会导致应用程序重启
【9月更文挑战第22天】在Java应用中,若图片位于bin目录下且下载新图片导致应用重启,可能是因为部署方式不当或资源监控机制过于敏感。解决方法包括:更改图片存储位置至独立目录;配置应用服务器减少资源监控敏感度;使用独立资源服务器托管静态资源;优化代码减少资源重复加载。具体方案需根据应用实际情况和技术栈调整。
|
2月前
|
Java
Java系列之 重命名文件/图片,renameTo() 方法的使用
这篇文章介绍了Java中File类的renameTo()方法,包括其使用方式、参数、返回值以及一些使用时的注意事项,并通过示例代码演示了如何使用该方法来重命名文件。
Java系列之 重命名文件/图片,renameTo() 方法的使用
|
1月前
|
数据采集 存储 前端开发
Java爬虫开发:Jsoup库在图片URL提取中的实战应用
Java爬虫开发:Jsoup库在图片URL提取中的实战应用
|
2月前
|
存储 安全 Java
"Java编码魔法:揭秘图片与文件的Base64神秘转换术,让数据在指尖跳跃!"
【8月更文挑战第16天】Base64编码在Java开发中常用于将二进制数据如图片转换为ASCII字符串以便传输。编码使用64个字符及等号填充,每3字节数据编码为4个字符。Java利用`java.util.Base64`类实现此功能:读取图片或文件为字节数组后进行编码。解码时将Base64字符串还原为字节数组并写入文件。需注意编码效率降低、不提供安全性及特殊字符兼容性等问题。掌握这些技巧有助于解决Web开发中的数据传输需求。
62 4
|
2月前
|
Java
Java 图片、文件 Base64 互转
Java 图片、文件 Base64 互转
34 0
|
2月前
|
Java
JAVA PDF 截取N页,生成新文件,转图片,多个PDF 合并
JAVA PDF 截取N页,生成新文件,转图片,多个PDF 合并
69 0
|
4月前
|
Java
用java 将 jb2 文件转图片的方法
用java 将 jb2 文件转图片的方法
20 0
|
4月前
|
存储 Java
图片LSB隐写(java)
图片LSB隐写(java)
|
5月前
|
存储 Java
java用base64编码案例
Java Base64编码示例:导入`java.util.Base64`,设置字符串`originalString`,使用`Base64.getEncoder().encodeToString()`编码并存储到`encodedString`,打印编码后字符串。解码用`Base64.getDecoder().decode()`。
48 0
下一篇
无影云桌面