J'essaie de lire un fichier dans un tampon, de le redimensionner puis de l'écrire sur le disque en utilisant l'exemple de code suivant:
function processImage(data) {
gm(data, 'test.jpg')
.resize('300x300')
.background('white')
.flatten()
.setFormat('jpg')
.toBuffer(function(err, buffer) {
if (err) {
throw err;
} else {
fs.writeFile('asd.jpg', buffer);
}
});
}
Cependant, cela génère une erreur Error: Stream yields empty buffer
. J'ai joué, utilisé imageMagick et graphicsMagick, toujours les mêmes.
Si je remplacetoBuffer(...
avecwrite('asd.jpg', function(err) ...
il écrit en fait un fichier approprié.
EDIT En écrivant cette question, j'ai trouvé la solution, voir la réponse
setFormat('jpg')
a causé les problèmes. Le changer ensetFormat('jpeg')
l'a résolu.
Était confronté au même problème, dans mon cas: installez le binaire graphicsmagick.
Sudo apt-get install graphicsmagick
Le flux donne un tampon vide
Cela indique une erreur générale de graphiksmagick. Voici quelques causes probables:
const gm = require('gm').subClass({imageMagick: true});
N'hésitez pas à ajouter plus d'idées en tant que commentaire.
Je suis également tombé sur cette erreur. Pour moi, la solution était d'augmenter la mémoire autorisée de 128 Mo à 256 Mo. J'ai remarqué que le processus avait besoin de 137 Mo pour réussir.