51 lines
1.4 KiB
JavaScript
51 lines
1.4 KiB
JavaScript
var debug = require('debug')('ylt:imageDimensions');
|
|
var Q = require('q');
|
|
var sizeOf = require('image-size');
|
|
|
|
var ImageDimensions = function() {
|
|
|
|
function getDimensions(entry) {
|
|
var deferred = Q.defer();
|
|
|
|
if (!entry.weightCheck || !entry.weightCheck.bodyBuffer) {
|
|
// No valid file available
|
|
deferred.resolve(entry);
|
|
return deferred.promise;
|
|
}
|
|
|
|
var fileSize = entry.weightCheck.uncompressedSize;
|
|
|
|
if (isJPEG(entry) || isPNG(entry)) {
|
|
try {
|
|
var dimensions = sizeOf(entry.weightCheck.bodyBuffer);
|
|
debug('Image dimensions of %s: %sx%s', entry.url, dimensions.width, dimensions.height);
|
|
|
|
entry.imageDimensions = {
|
|
width: dimensions.width,
|
|
height: dimensions.height
|
|
};
|
|
} catch(err) {
|
|
debug('Error while checking image dimensions:');
|
|
debug(err);
|
|
}
|
|
}
|
|
|
|
deferred.resolve(entry);
|
|
|
|
return deferred.promise;
|
|
}
|
|
|
|
function isJPEG(entry) {
|
|
return entry.isImage && entry.contentType === 'image/jpeg';
|
|
}
|
|
|
|
function isPNG(entry) {
|
|
return entry.isImage && entry.contentType === 'image/png';
|
|
}
|
|
|
|
return {
|
|
getDimensions: getDimensions
|
|
};
|
|
};
|
|
|
|
module.exports = new ImageDimensions(); |