I tested this package:
it requires a front-end part to make Canvas element .. and so on, I only need to make this process without front-end
I use react native, so any solution for React/Native, node, or native javascript is acceptable.
I tested this package: https://preview.npmjs.com/package/resize-base64
it requires a front-end part to make Canvas element .. and so on, I only need to make this process without front-end
I use react native, so any solution for React/Native, node, or native javascript is acceptable.
Share Improve this question edited Jun 24, 2018 at 17:30 Gausul 2653 silver badges16 bronze badges asked Jun 24, 2018 at 13:34 27mdmo7sn27mdmo7sn 5092 gold badges6 silver badges15 bronze badges 2- You can try this solution or this one with javascript – galvan Commented Jun 24, 2018 at 13:39
- what about node-canvas? – Itamar Commented Jun 24, 2018 at 13:59
2 Answers
Reset to default 18its maybe late, but hope to help the others.
const sharp = require('sharp');
// original base64 image
const base64Image = "data:image/jpeg;base64,/9j/4QDsRXhpZg ... ... ... ";
// express route function
export default function (req, res, next) {
let parts = base64Image.split(';');
let mimType = parts[0].split(':')[1];
let imageData = parts[1].split(',')[1];
var img = new Buffer(imageData, 'base64');
sharp(img)
.resize(64, 64)
.toBuffer()
.then(resizedImageBuffer => {
let resizedImageData = resizedImageBuffer.toString('base64');
let resizedBase64 = `data:${mimType};base64,${resizedImageData}`;
res.send(resizedBase64);
})
.catch(error => {
// error handeling
res.send(error)
})
}
You have to do this in steps:
- Decode the Base64
- Decode the image data
- Scale the image
- Encode the image
- Output the image
Almost all of these steps can be done with Sharp. https://github.com/lovell/sharp This package uses libvips
and is significantly faster than any other image scaler in most cases.