You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.1 KiB
58 lines
1.1 KiB
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 |
|
*/ |
|
|
|
module.exports = 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; |
|
};
|
|
|