2017-06-25 37 views
0

我想在用户上传到我的网站后调整图像大小并压缩图像。看起来有很多选项可以用节点调整图像大小(例如https://github.com/lovell/sharp),但我也想压缩图像以节省磁盘空间并允许更快的服务时间。有没有图书馆或其他的东西可以使这成为可能?使用Node.js和Google云端存储压缩图像

这是我目前(功能)航线的简化版本,今天,因为它代表:

var router = require('express').Router(); 
var bucket = require('../modules/google-storage-bucket'); 
var Multer = require('multer'); 
var multer = Multer({ 
    storage: Multer.memoryStorage(), 
    limits: { 
    fileSize: 5 * 1024 * 1024 // no larger than 5mb 
    } 
}); 

// Process the file upload and upload to Google Cloud Storage. 
router.post('/', multer.single('file'), (req, res) => { 

    // rejecting if no file is uploaded 
    if (!req.file) { 
    res.status(400).send('No file uploaded.'); 
    return; 
    } 

    // Create a new blob in the bucket and upload the file data. 
    var blob = bucket.file('fileName'); 
    var blobStream = blob.createWriteStream(); 

    blobStream.on('error', (err) => { 
    console.log('error', err); 
    res.send(500); 
    }); 

    blobStream.on('finish',() => { 
    console.log('everything worked!') 
    }); 

    blobStream.end(req.file.buffer); 
}); 

module.exports = router; 
+0

也许[这里](https://stackoverflow.com/questions/7073784/node-js-image-compression)你会发现一些有用的东西:) –

+0

似乎这个库允许我从命令行进行压缩,我可以做到这一点,我无法从我的上传项目中做到这一点。除非我误解了这个库。 –

回答

1

从我的经验,我会建议imagemin。我用它作为一个Gulp插件,所以你可以100%在你的项目中使用。但你也必须下载第三方模块:imagemin-pngquant和imagemin-jpegtran。

希望你能欣赏它:)

2

夏普支持图像压缩。例如:

http://sharp.dimens.io/en/stable/api-output/#jpeg

列出JPEG写的选项。您可以调整JPEG压缩器上的一系列旋钮,以调整其性能/压缩/质量折衷。在最好的情况下,你可以将压缩率提高约30%,这对我来说实际上感觉有些勉强。这不太可能对您的页面大小或加载时间产生重大影响。

在节省存储空间方面,最好的解决方案并不是存储图像 - 锐利速度足够快,您可以根据需要简单生成所有图像(大多数动态图像调整大小的Web代理使用锐利的引擎)。这是一个真正能够为你节省资金并使你的网页看起来更好的改变。

相关问题