Search code examples
meteorgraphicsmagick

GraphicsMagick not getting called


I'm trying to create thumbnails of images that are being uploaded to my Amazon S3 store. The image upload in itself is working fine, but for some reason the gm(readStream, fileObj.name()).resize('50','50').stream().pipe(writeStream) call is never made because gm.isAvailable returns undefined. However, when I call it directly from the meteor shell environment I get "true". What am I doing wrong?

if (Meteor.isServer) {
  var imageStore = new FS.Store.S3("images", {
    region: "eu-west-1",
    accessKeyId: (Meteor.isServer && !process.env.AWS_ACCESS_KEY_ID ? Meteor.settings.AWSAccessKeyId : null),
    secretAccessKey: (Meteor.isServer && !process.env.AWS_SECRET_ACCESS_KEY ? Meteor.settings.AWSSecretAccessKey : null),
    bucket: Meteor.isServer && process.env.AWS_S3_BUCKET || Meteor.settings.AWSBucket,
    folder: "images"
  });

  var thumbStore = new FS.Store.S3("thumbnails", {
    region: "eu-west-1",
    accessKeyId: (Meteor.isServer && !process.env.AWS_ACCESS_KEY_ID ? Meteor.settings.AWSAccessKeyId : null),
    secretAccessKey: (Meteor.isServer && !process.env.AWS_SECRET_ACCESS_KEY ? Meteor.settings.AWSSecretAccessKey : null),
    bucket: Meteor.isServer && process.env.AWS_S3_BUCKET || Meteor.settings.AWSBucket,
    folder: "thumbnails",
    transformWrite: function(fileObj, readStream, writeStream) {
      // transform image into 50 x 50 thumbnail
      console.log("thumbnail transform");
      console.log(gm.IsAvailable);
      if (gm.IsAvailable) {
        return gm(readStream, fileObj.name()).resize('50','50').stream().pipe(writeStream);
      } else {
        console.log("That didn't work");
      }
    }
  });

  Images = new FS.Collection("Images", {
    stores: [
      thumbStore,
      imageStore
    ],
    filter: {
      allow: {
        contentTypes: ['image/*']
      }
    }
  });
}
// end server

if (Meteor.isClient) {
  var imageStore = new FS.Store.S3("images");
  var thumbStore = new FS.Store.S3("thumbnails");

  Images = new FS.Collection("Images", {
    stores: [
      thumbStore,
      imageStore
    ],
    filter: {
      allow: {
        contentTypes: ['image/*']
      }
    }
  });
}
// end client

When I start my app or upload a picture I get "thumbnail transform", "undefined" and "That didn't work"...

I'm running on Win 10, installed GraphicsMagick 1.3.21 and I'm using the cfs:graphicsmagick package.

Does anyone have any thoughts?


Solution

  • Try gm.isAvailable with a lower case i.