Skip to content

Commit

Permalink
Merge pull request aheckmann#157 from aheckmann/format-gif
Browse files Browse the repository at this point in the history
gm().size() returns size for GIFs correctly
  • Loading branch information
jonathanong committed Apr 21, 2013
2 parents ef9bece + d8c424b commit 7da7c9d
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 12 deletions.
1 change: 1 addition & 0 deletions History.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
* tests; all tests now run on Travis
* added; gm().stream() returns a stream when no callback is present
* added; gm().toBuffer(callback)
* fixed; gm().size() only returns the size of the first frame of a GIF

1.8.2 / 2013-03-07
==================
Expand Down
6 changes: 4 additions & 2 deletions lib/getters.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ module.exports = function (gm) {
'format': { key: 'format', format: '%m' }
, 'depth': { key: 'depth', format: '%q' }
, 'filesize': { key: 'Filesize', format: '%b' }
, 'size': { key: 'size', format: '%wx%h', helper: 'Geometry' }
, 'size': { key: 'size', format: '%wx%h ', helper: 'Geometry' }
, 'color': { key: 'color', format: '%k', helper: 'Colors' }
, 'orientation': { key: 'Orientation', verbose: true }
, 'res': { key: 'Resolution', verbose: true }
Expand Down Expand Up @@ -245,7 +245,9 @@ module.exports = function (gm) {
var helper = gm.identifyHelpers = {};

helper.Geometry = function Geometry (o, val) {
var split = val.split("x");
// We only want the size of the first frame.
// Each frame is separated by a space.
var split = val.split(" ").shift().split("x");
o.size = {
width: parseInt(split[0], 10)
, height: parseInt(split[1], 10)
Expand Down
53 changes: 43 additions & 10 deletions test/getterSize.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,53 @@

var assert = require('assert');

module.exports = function (gm, dir, finish, GM) {
if (!GM.integration)
module.exports = function (_, dir, finish, gm) {
if (!gm.integration)
return finish();

gm
.size(function gettersize (err, size) {
sizeJPEG(function (err) {
if (err) return finish(err);

assert.equal(size.width, 460);
assert.equal(size.height, 155);

GM(dir + '/identifyParseErr.jpg').size(function (err) {
sizeGIF(function (err) {
if (err) return finish(err);
finish();

sizePNG(finish);
})
})

function sizeJPEG(done) {
gm(dir + '/original.jpg')
.size(function gettersize (err, size) {
if (err) return done(err);

assert.equal(size.width, 460);
assert.equal(size.height, 155);

gm(dir + '/identifyParseErr.jpg').size(done);
});
});
}

function sizeGIF(done) {
gm(dir + '/original.gif')
.size(function (err, size) {
if (err) return done(err);

assert.equal(size.width, 192)
assert.equal(size.height, 56)

done()
})
}

function sizePNG(done) {
gm(dir + '/original.png')
.size(function (err, size) {
if (err) return done(err);

assert.equal(size.width, 460)
assert.equal(size.height, 155)

done()
})
}
}

0 comments on commit 7da7c9d

Please sign in to comment.