簡體   English   中英

使用節點在服務器上進行圖像優化

[英]Image optimization on the server using node

我有一台服務器正在將圖像上傳到該服務器。 我需要以某種方式優化圖像上傳。 這就是我上傳文件的方式:

uploadImage(file, uid, res) {
    var fs = require('fs');
    mongoose.connect(config.db, {useNewUrlParser: true},).catch(e => console.log(e));
    var conn = mongoose.connection;
    Grid.mongo = mongoose.mongo;
    const gfs = Grid(conn.db);
    const writeStream = gfs.createWriteStream({
        filename: file.filename,
    });
    fs.createReadStream(file.path).pipe(writeStream);
    writeStream.on('close', file => {
        const {_id} = file;
        return Account.findByIdAndUpdate(uid, {'employer.logo': _id}).then(() => res.redirect('/employer')).catch(e => console.log(e));
    });
},

上傳前如何優化圖像? 最好是否有類似gulp的東西,但對於服務器呢?

我最終使用了這個https://github.com/imagemin/imagemin 非常簡單。 這是我的代碼:

async uploadImage(file, uid, res) {
    const imagemin = require('imagemin');
    const imageminJpegtran = require('imagemin-jpegtran');
    const imageminPngquant = require('imagemin-pngquant');
    console.log(1);
    // const newFilePath = `${file.path}optimized`;
    const newFile = await imagemin([file.path], newPath, {
        plugins: [
            imageminJpegtran(),
            imageminPngquant({quality: '65-80'})
        ]
    });
    // newFile.path = newFilePath;
    console.log(2);
    console.log(file);
    console.log(newFile);
    var fs = require('fs');
    await mongoose.connect(config.db, {useNewUrlParser: true},).catch(e => console.log(e));
    var conn = mongoose.connection;
    Grid.mongo = mongoose.mongo;
    const gfs = Grid(conn.db);
    const writeStream = gfs.createWriteStream({
        filename: newFile.filename,
    });
    fs.createReadStream(newFile.path).pipe(writeStream);
    writeStream.on('close', file => {
        const {_id} = file;
        return Account.findByIdAndUpdate(uid, {'employer.logo': _id}).then(() => res.redirect('/employer')).catch(e => console.log(e));
    });
},

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM