Skip to content

Instantly share code, notes, and snippets.

@Ugarz
Last active April 26, 2018 15:18
Show Gist options
  • Save Ugarz/6c1d409d87b8cc0b8589ee834350cf74 to your computer and use it in GitHub Desktop.
Save Ugarz/6c1d409d87b8cc0b8589ee834350cf74 to your computer and use it in GitHub Desktop.
How to manipulate image throught base64 with Nodejs

Basic image manipulation with base64

var fs = require('fs');

function base64_encode(file) {
    console.time('encoding')
    var bitmap = fs.readFileSync(file);
    var result =  new Buffer(bitmap).toString('base64');
    console.timeEnd('encoding')
    return result;
}

function base64_decode(base64str, file) {
    console.time('decoding')
    var bitmap = new Buffer(base64str, 'base64');
    fs.writeFileSync(file, bitmap);
    console.timeEnd('decoding')
}

var base64str = base64_encode('trump.jpeg');
console.log(base64str)
base64_decode(base64str, 'copy.jpg');
const stream = require("stream");
const fs = require("fs");
const file1 = "file1.jpg"
const file2 = "file2.pdf"
const file3 = "file3.png"
const assetsFolderIn = "assets/in"
const assetsFolderOut = "assets/out"
const readStream = fs.createReadStream(`${assetsFolderIn}/${file1}`);
const readStream2 = fs.createReadStream(`${assetsFolderIn}/${file2}`);
const readStream3 = fs.createReadStream(`${assetsFolderIn}/${file3}`);
const writeStream = fs.createWriteStream(`${assetsFolderOut}/${file1}`);
const writeStream2 = fs.createWriteStream(`${assetsFolderOut}/${file2}`);
const writeStream3 = fs.createWriteStream(`${assetsFolderOut}/${file3}`);
let base64str = [];
let base64str2 = [];
let base64str3 = [];
function fmt(data){
const lineConverted = Buffer.from(data).toString("base64");
base64str.push(lineConverted);
}
readStream
.on("data", fmt)
.pipe(writeStream)
.on("finish", () => console.log("Done 1"));
readStream2
.on("data", fmt)
.pipe(writeStream)
.on("finish", () => console.log("Done 2"));
readStream3
.on("data", fmt)
.pipe(writeStream)
.on("finish", () => console.log("Done 3"));
const stream = require("stream");
const fs = require("fs");
const file1 = "file1.jpg"
const file2 = "file2.pdf"
const file3 = "file3.png"
const assetsFolderIn = "assets/in"
const assetsFolderOut = "assets/out"
const readStream = fs.createReadStream(`${assetsFolderIn}/${file1}`);
const readStream2 = fs.createReadStream(`${assetsFolderIn}/${file2}`);
const readStream3 = fs.createReadStream(`${assetsFolderIn}/${file3}`);
let base64str = [];
let base64str2 = [];
let base64str3 = [];
// Premier READSTREAM
readStream.on("data", function(data, linecount) {
const lineConverted = Buffer.from(data).toString("base64");
base64str.push(lineConverted);
});
// Second READSTREAM
readStream2.on("data", function(data, linecount) {
const lineConverted = Buffer.from(data).toString("base64");
base64str.push(lineConverted);
});
readStream.on("close", function() {
cleanedBase64 = base64str.join("");
const bitmap = Buffer.from(cleanedBase64, "base64");
console.log("Writing files...");
fs.writeFileSync(`${assetsFolderOut}/copy-${file1}`, bitmap);
fs.writeFileSync("assets/out/base64.txt", cleanedBase64);
console.log("Finished");
});
readStream2.on("close", function() {
cleanedBase64 = base64str.join("");
const bitmap = Buffer.from(cleanedBase64, "base64");
console.log("Writing files...");
fs.writeFileSync(`${assetsFolderOut}/copy-${file2}`, bitmap);
fs.writeFileSync("assets/out/base64.txt", cleanedBase64);
console.log("Finished");
});
// Troisième READSTREAM
readStream3.on("data", function(data, linecount) {
const lineConverted = Buffer.from(data).toString("base64");
base64str.push(lineConverted);
});
readStream3.on("close", function() {
cleanedBase64 = base64str.join("");
const bitmap = Buffer.from(cleanedBase64, "base64");
console.log("Writing files...");
fs.writeFileSync(`${assetsFolderOut}/copy-${file3}`, bitmap);
fs.writeFileSync("assets/out/base64.txt", cleanedBase64);
console.log("Finished");
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment