image-compress/index.js

66 lines
1.4 KiB
JavaScript

var express = require('express');
var bodyparser = require('body-parser');
var fs = require('fs');
var multer = require('multer');
var sharp = require('sharp');
var path = require('path');
var upload = multer({
dest: './images'
})
var app = express();
app.use("/",express.static('public'))
app.use(bodyparser.urlencoded({
extended: true
}))
app.post('/upload', upload.single("avatar"), async (req, res) => {
var ts = Date.now();
var options = {
root: path.join(__dirname + `/images`)
};
await fs.rename(req.file.path, `./images/org-${ts}.jpg`, (err) => {
if (err) throw err;
console.log("Done");
})
if (req.query.type == "png") {
await sharp(__dirname + `/images/org-${ts}.jpg`)
.png({
quality: 50
}).toFile(__dirname +
`/images/converted-${ts}.png`);
var fileName = `converted-${ts}.png`;
} else if (req.query.type == "webp") {
await sharp(__dirname + `/images/org-${ts}.jpg`)
.webp({
quality: 50
}).toFile(__dirname +
`/images/converted-${ts}.webp`);
var fileName = `converted-${ts}.webp`;
} else {
await sharp(__dirname + `/images/org-${ts}.jpg`)
.jpeg({
quality: 80
}).toFile(__dirname +
`/images/converted-${ts}.jpg`);
var fileName = `converted-${ts}.jpg`;
}
res.sendFile(fileName, options, async function (err) {
if (err) {
console.log(err);
} else {
console.log('Sent:', fileName);
}
});
});
app.listen(3000, () => {
console.log("Server Running!")
})