imageDimensions.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. var debug = require('debug')('ylt:imageDimensions');
  2. var Q = require('q');
  3. var sizeOf = require('image-size');
  4. var ImageDimensions = function() {
  5. function getDimensions(entry) {
  6. var deferred = Q.defer();
  7. if (!entry.weightCheck || !entry.weightCheck.bodyBuffer) {
  8. // No valid file available
  9. deferred.resolve(entry);
  10. return deferred.promise;
  11. }
  12. var fileSize = entry.weightCheck.uncompressedSize;
  13. if (isJPEG(entry) || isPNG(entry)) {
  14. try {
  15. var dimensions = sizeOf(entry.weightCheck.bodyBuffer);
  16. debug('Image dimensions of %s: %sx%s', entry.url, dimensions.width, dimensions.height);
  17. entry.imageDimensions = {
  18. width: dimensions.width,
  19. height: dimensions.height
  20. };
  21. } catch(err) {
  22. debug('Error while checking image dimensions:');
  23. debug(err);
  24. }
  25. }
  26. deferred.resolve(entry);
  27. return deferred.promise;
  28. }
  29. function isJPEG(entry) {
  30. return entry.isImage && entry.contentType === 'image/jpeg';
  31. }
  32. function isPNG(entry) {
  33. return entry.isImage && entry.contentType === 'image/png';
  34. }
  35. return {
  36. getDimensions: getDimensions
  37. };
  38. };
  39. module.exports = new ImageDimensions();