簡體   English   中英

如何在SharpJS中使用Sharp調整圖像大小然后使用multer上傳

[英]How to resize image with sharp then upload with multer in nodejs

我正在開發一項功能,以允許用戶使用nodejs將圖像上傳到mongodb:

  • 我的問題 :

    從用戶請求中獲取圖像文件並執行2個任務:例如,以集合名稱“ Origin_image”將當前圖像存儲到mongodb中,並調整當前圖像的大小並以集合名稱“ Thumbnail_image”存儲到mongodb中

  • 到目前為止,我的解決方案:

    我只是通過使用multer-gridfs-storage和multer之類的代碼來存儲成功原始圖像

    const multer = require('multer'); const GridFsStorage = require('multer-gridfs-storage');

    const multer = require('multer'); const GridFsStorage = require('multer-gridfs-storage');

      let storageFS = new GridFsStorage({ db: app.get("mongodb"), file: (req, file) => { return new Promise((resolve, reject) => { crypto.randomBytes(16, (err, buf) => { if (err) { return reject(err); } const filename = file.originalname; const fileInfo = { filename: filename, bucketName: 'images' }; resolve(fileInfo); }); }); } }); var upload = multer({ storage: storageFS }).single('image'); exports.uploadImage = async function (req, res) { try { upload(req, res, function (err) { if (err) { return res.send(err) } res.json({ status: true, filePath: req.file.originalname }); }); } catch (error) { res.send(error); } } 

有人有解決我問題的想法嗎? 謝謝 !

如果您在前端使用Angular,請讓最終用戶處理圖像大小調整,以便您的服務器不必處理開銷。 我目前正在使用ng2-img-max調整圖像大小。 您可以在文件更改時啟動調整大小。

我還想先創建縮略圖,再創建原始縮略圖,但這在調整大小和在重新對它們進行調整時又造成了巨大的性能問題,因為GridFs在對其進行任何操作之前都將它們存儲起來,剩下的就是響應。 因此,節省一些時間。 僅調整一次大小,到用戶所限制的大小,然后再顯示縮略圖,請使用帶有自定義查詢參數的Sharp來顯示所需的大小。

祝你好運,編碼愉快。

暫無
暫無

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

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