【问题标题】:GraphicsMagick how to resize images from binary dataGraphicsMagick 如何从二进制数据中调整图像大小
【发布时间】:2014-11-28 03:16:51
【问题描述】:

我正在尝试使用 GraphicsMagick 在上传到 Amazon S3 之前调整图像大小。

我能够像这样获取图像文件的二进制数据:

        reader.onload = function(e) {

            Meteor.call('s3_upload', file, reader.result)
        }
        reader.readAsDataURL( file )

但问题是 reader.result 不是文件 URL。这是一个二进制字符串数据。

如何获取这个二进制字符串数据并调整其大小?

【问题讨论】:

    标签: meteor imagemagick graphicsmagick


    【解决方案1】:

    这可能是对您的问题的较晚回复,但可以为任何有相同问题的人回答。

    在初始化 Fs.Store 时,您可以在使用 GraphicsMagick 从 transformWrite 选项上传之前调整图像大小

    Image Manipulation 来自 collectionFS, 这是来自 collectionFS S3 的 sn-p doc

        var avatarStoreLarge = new FS.Store.S3("avatarsLarge", {
      accessKeyId: "ID-HERE", 
      secretAccessKey: "ACCESS-KEY-HERE", 
      bucket: "avatars.large",
      transformWrite: function(fileObj, readStream, writeStream) {
        gm(readStream, fileObj.name()).resize('250', '250').stream().pipe(writeStream)
      }
    });
    
    var avatarStoreSmall = new FS.Store.S3("avatarsSmall", {
      accessKeyId: "ID-HERE", 
      secretAccessKey: "ACCESS-KEY-HERE", 
      bucket: "avatars.small",
      beforeWrite: function(fileObj) {
        fileObj.size(20, {store: "avatarStoreSmall", save: false});
      },
      transformWrite: function(fileObj, readStream, writeStream) {
        gm(readStream, fileObj.name()).resize('20', '20').stream().pipe(writeStream)
      }
    });
    
    
    Avatars = new FS.Collection("avatars", {
      stores: [avatarStoreSmall, avatarStoreLarge],
      filter: {
        allow: {
          contentTypes: ['image/*']
        }
      }
    }); 
    

    【讨论】:

      猜你喜欢
      • 2015-09-19
      • 1970-01-01
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      • 2013-05-12
      • 1970-01-01
      • 2011-03-05
      • 2013-10-24
      相关资源
      最近更新 更多