J'utilise le paquet cfs: graphicsmagick pour météore et je veux lire une image à partir de la chaîne base64.
Meteor.methods({
"readImage"(imgSrc) {
const imageMagick = gm.subClass({ imageMagick: true });
imageMagick(imgSrc)
.write("path/to/image.jpg", (err) => {
if (err) console.log(err);
else console.log("yay!")
});
}
});
Cependant, lorsque j'essaie d'exécuter ce code, j'obtiens une erreur:
{ [Error: spawn ENAMETOOLONG] code: "ENAMETOOLONG", errno: "ENAMETOOLONG", syscall: "spawn" }
J'ai essayé de convertir une chaîne en mémoire tampon via new Buffer(string, [encoding])
mais pas de chance.
La chaîne est semblable à ceci: data:image/png;base64,iVBORw0K...
.
Des suggestions sur comment puis-je le faire fonctionner?
Réponses:
2 pour la réponse № 1Essayez de passer la chaîne base64 sans pour autant définition du type (data: image / png; base64,) jusqu'au symbole de virgule. Par exemple: iVBORw0K...
J'utilise cette fonction pour effectuer la conversion:
var fs = Npm.require("fs");
...
base64_decode: function(base64str, file) {
var bitmap = new Buffer(base64str, "base64");
fs.writeFileSync(file, bitmap);
}
exemple d'utilisation:
base64_decode("iVBORw0K...", "/path/to/file.png");