User_3535
User_3535

Reputation: 852

how to store image from buffer to file system in node.js using sharp.js

i am using sharp.js for image manipulation in node.js

my code

sharp(path)
        .toFormat('jpeg')
        .toBuffer((err, data, info) => {
            fs.writeFile(temp, buffer, { flag: 'w' }, function() {
                response.sendFile(temp);
            });
        });

here temp in fs means "the path" var temp= imageDir + request.params.id; ( http://localhost:2000/images/we.png )

  1. upload image as png format or any other format

  2. convert that image to JPEG using .toFormat('jpeg') and send to buffer

  3. want to save that image from buffer to

Upvotes: 4

Views: 16931

Answers (2)

Prathamesh More
Prathamesh More

Reputation: 1489

You can do this

sharp(req.files[0].path).resize(400, 200).toFile('uploads/' + 'thumbnail-' + req.files[0].originalname, (err, sharp) => {
            if (err) {
                console.error(err);
            }
            else {
                console.log(sharp);
            }
        });

Upvotes: 0

bknights
bknights

Reputation: 15402

Your code doesn't have 'buffer'. You should be writing data.

.toBuffer((err, data, info) => {
        fs.writeFile(temp, data, { flag: 'w' }, function() {
            response.sendFile(temp);
        });
    });

but you'd be better off using toFile instead of toBuffer:

sharp('originalFile.jpg').
        resize(330,null).
        flatten().
        toFile('newFile.jpg', function(err){
            if(err){
                response.sendStatus(500);
                return;
            }
            response.sendFile('newFile.jpg');
        });

Upvotes: 4

Related Questions