2023-10-03 11:14:36 +08:00
|
|
|
var utils = require('../utils')
|
|
|
|
, nodes = require('../nodes')
|
|
|
|
, Image = require('./image');
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Return the width and height of the given `img` path.
|
|
|
|
*
|
|
|
|
* Examples:
|
|
|
|
*
|
|
|
|
* image-size('foo.png')
|
|
|
|
* // => 200px 100px
|
|
|
|
*
|
|
|
|
* image-size('foo.png')[0]
|
|
|
|
* // => 200px
|
|
|
|
*
|
|
|
|
* image-size('foo.png')[1]
|
|
|
|
* // => 100px
|
|
|
|
*
|
|
|
|
* Can be used to test if the image exists,
|
|
|
|
* using an optional argument set to `true`
|
|
|
|
* (without this argument this function throws error
|
|
|
|
* if there is no such image).
|
|
|
|
*
|
|
|
|
* Example:
|
|
|
|
*
|
|
|
|
* image-size('nosuchimage.png', true)[0]
|
|
|
|
* // => 0
|
|
|
|
*
|
|
|
|
* @param {String} img
|
|
|
|
* @param {Boolean} ignoreErr
|
|
|
|
* @return {Expression}
|
|
|
|
* @api public
|
|
|
|
*/
|
|
|
|
|
|
|
|
function imageSize(img, ignoreErr) {
|
|
|
|
utils.assertType(img, 'string', 'img');
|
|
|
|
try {
|
|
|
|
var img = new Image(this, img.string);
|
|
|
|
} catch (err) {
|
|
|
|
if (ignoreErr) {
|
|
|
|
return [new nodes.Unit(0), new nodes.Unit(0)];
|
|
|
|
} else {
|
|
|
|
throw err;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Read size
|
|
|
|
img.open();
|
|
|
|
var size = img.size();
|
|
|
|
img.close();
|
|
|
|
|
|
|
|
// Return (w h)
|
|
|
|
var expr = [];
|
|
|
|
expr.push(new nodes.Unit(size[0], 'px'));
|
|
|
|
expr.push(new nodes.Unit(size[1], 'px'));
|
|
|
|
|
|
|
|
return expr;
|
|
|
|
};
|
|
|
|
imageSize.params = ['img', 'ignoreErr'];
|
|
|
|
module.exports = imageSize;
|