59 lines
1.1 KiB
Markdown
59 lines
1.1 KiB
Markdown
|
|
# imagesize.js
|
||
|
|
|
||
|
|
Determines the size of an image without reading or downloading it entirely.
|
||
|
|
|
||
|
|
Implemented using an incremental parser, and can be fed multiple times with data
|
||
|
|
chunks of any size.
|
||
|
|
|
||
|
|
## Usage
|
||
|
|
|
||
|
|
```
|
||
|
|
var imagesize = require('imagesize');
|
||
|
|
|
||
|
|
imagesize(stream, function (err, result) {
|
||
|
|
if (!err) {
|
||
|
|
console.log(result); // {type, width, height}
|
||
|
|
}
|
||
|
|
});
|
||
|
|
```
|
||
|
|
|
||
|
|
The first argument should be a stream emitting `data` and `end` events.
|
||
|
|
|
||
|
|
Full example:
|
||
|
|
|
||
|
|
```
|
||
|
|
var http = require('http');
|
||
|
|
var imagesize = require('imagesize');
|
||
|
|
|
||
|
|
var request = http.get('http://nodejs.org/images/logo-light.png', function (response) {
|
||
|
|
imagesize(response, function (err, result) {
|
||
|
|
// do something with result
|
||
|
|
|
||
|
|
// we don't need more data
|
||
|
|
request.abort();
|
||
|
|
});
|
||
|
|
});
|
||
|
|
```
|
||
|
|
|
||
|
|
## Advanced usage:
|
||
|
|
|
||
|
|
You can also use the incremental parser directly:
|
||
|
|
|
||
|
|
```
|
||
|
|
var Parser = require('imagesize').Parser;
|
||
|
|
var parser = Parser();
|
||
|
|
|
||
|
|
switch (parser.parse(buffer)) {
|
||
|
|
case Parser.EOF:
|
||
|
|
// needs moar data
|
||
|
|
break;
|
||
|
|
case Parser.INVALID:
|
||
|
|
// invalid input, abort
|
||
|
|
break;
|
||
|
|
case Parser.DONE:
|
||
|
|
var result = parser.getResult();
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|