Appearance
起因就是想用一张图作为壁纸,但是壁纸太糊了,去找 ai 修复,结果 ai 让我关注微信号 才能下,所以我直接打开控制台看输出的图片 src,好家伙,是 base64 字符串,然后就想 到是否可以用 base64 字符串转图片,在网上查阅资料后成功写出该程序。
js
const { createReadStream, existsSync, writeFile } = require("fs");
const { resolve } = require("path");
/**
* base64转图片 将源文件转成图片并输出到目标路径中
* @param {string} srcPath 源路径
* @param {string} destPath 目标路径
*/
async function base64ToImg(srcPath, destPath) {
if (!existsSync(srcPath)) {
console.log("源文件不存在!");
}
const res = await new Promise((r, j) => {
let data = "";
const rs = createReadStream(srcPath);
rs.on("data", (chunk) => {
data += chunk;
});
rs.on("end", () => {
r(data);
});
rs.on("error", () => j("读取目标文件出错!"));
});
const base64 = res.replace(/^data:image\/\w+;base64,/, ""); //去掉图片base64码前面部分data:image/png;base64
const dataBuffer = Buffer.from(base64, "base64");
writeFile(destPath, dataBuffer, (err) => {
if (err) {
console.log("输出失败");
} else {
console.log("输出成功!");
}
});
}
base64ToImg(
resolve(__dirname, "./input"),
resolve(__dirname, `./output_${Date.now()}.png`)
);
const { createReadStream, existsSync, writeFile } = require("fs");
const { resolve } = require("path");
/**
* base64转图片 将源文件转成图片并输出到目标路径中
* @param {string} srcPath 源路径
* @param {string} destPath 目标路径
*/
async function base64ToImg(srcPath, destPath) {
if (!existsSync(srcPath)) {
console.log("源文件不存在!");
}
const res = await new Promise((r, j) => {
let data = "";
const rs = createReadStream(srcPath);
rs.on("data", (chunk) => {
data += chunk;
});
rs.on("end", () => {
r(data);
});
rs.on("error", () => j("读取目标文件出错!"));
});
const base64 = res.replace(/^data:image\/\w+;base64,/, ""); //去掉图片base64码前面部分data:image/png;base64
const dataBuffer = Buffer.from(base64, "base64");
writeFile(destPath, dataBuffer, (err) => {
if (err) {
console.log("输出失败");
} else {
console.log("输出成功!");
}
});
}
base64ToImg(
resolve(__dirname, "./input"),
resolve(__dirname, `./output_${Date.now()}.png`)
);