Skip to content
This repository was archived by the owner on May 1, 2025. It is now read-only.

Commit 61c545a

Browse files
author
Hans Kristian Flaatten
committed
Merge branch 'auto-orient'
2 parents e55912f + 07747d1 commit 61c545a

File tree

5 files changed

+99
-40
lines changed

5 files changed

+99
-40
lines changed

assets/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
autorotate-*
12
vertical-*
23
horizontal-*
34
transparent-*

assets/autorotate.jpg

2.62 MB
Loading

index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ module.exports.path = function(src, opts) {
6969
*/
7070
module.exports.cmd = function(image, output) {
7171
var cmd = [
72-
sprintf('convert %s -strip -write mpr:%s +delete', image.path, image.path)
72+
sprintf('convert %s -auto-orient -strip -write mpr:%s +delete', image.path, image.path)
7373
];
7474

7575
for (var i = 0; i < output.versions.length; i++) {

test.js

Lines changed: 86 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
/*jshint laxbreak:true */
22

33
var assert = require('assert');
4+
var crypto = require('crypto');
5+
var fs = require('fs');
46
var resize = require('./index');
57

68
describe('resize.path()', function() {
@@ -143,6 +145,7 @@ describe('resize.cmd()', function() {
143145
assert.equal(cmd, [
144146
// original image
145147
'convert ./assets/horizontal.jpg',
148+
'-auto-orient',
146149
'-strip',
147150
'-write mpr:./assets/horizontal.jpg +delete',
148151

@@ -275,23 +278,26 @@ describe('resize()', function() {
275278
height: 2623
276279
};
277280

278-
var paths = [
279-
'assets/horizontal-full.jpg',
280-
'assets/horizontal-1200.jpg',
281-
'assets/horizontal-800.jpg',
282-
'assets/horizontal-500.jpg',
283-
'assets/horizontal-260.jpg',
284-
'assets/horizontal-150.jpg',
285-
'assets/horizontal-square-200.jpg',
286-
'assets/horizontal-square-50.jpg'
287-
];
281+
var checksum = {
282+
'assets/horizontal-full.jpg' : '1a97483f4dfc21ea77217731a0f1908f8edeec22',
283+
'assets/horizontal-1200.jpg' : '54f1be17d4ffac0cb23802f1c04e783594662a8a',
284+
'assets/horizontal-800.jpg' : '9ebf00a2d96361720dcbcb66af14689d3d51269f',
285+
'assets/horizontal-500.jpg' : '58b09dc1f4ecf22427cc73ffd7b8ef2194fff4bb',
286+
'assets/horizontal-260.jpg' : '33437a2300f7d991c439d532075e211aad962a78',
287+
'assets/horizontal-150.jpg' : 'ad5957669f0774cd66be76414dcbe6b0d789367d',
288+
'assets/horizontal-square-200.jpg': '576b72b83f486cfc684f459670e912310427a6a5',
289+
'assets/horizontal-square-50.jpg' : 'cc0291eb853ceba62b009626ae7a0e68562e93de'
290+
};
288291

289292
resize(image, output, function(err, versions) {
290293
assert.ifError(err);
291294
assert(versions instanceof Array);
292295

293296
for(var i = 0; i < versions.length; i++) {
294-
assert.equal(versions[i].path, paths[i]);
297+
var file = fs.readFileSync(versions[i].path);
298+
var sha = crypto.createHash('sha1').update(file).digest('hex');
299+
300+
assert.equal(sha, checksum[versions[i].path]);
295301
}
296302

297303
done();
@@ -307,23 +313,28 @@ describe('resize()', function() {
307313
height: 3456
308314
};
309315

310-
var paths = [
311-
'assets/vertical-full.jpg',
312-
'assets/vertical-1200.jpg',
313-
'assets/vertical-800.jpg',
314-
'assets/vertical-500.jpg',
315-
'assets/vertical-260.jpg',
316-
'assets/vertical-150.jpg',
317-
'assets/vertical-square-200.jpg',
318-
'assets/vertical-square-50.jpg'
319-
];
316+
var checksum = {
317+
'assets/vertical-full.jpg' : '709746db3a56f66066f846e273db78dee60d0311',
318+
'assets/vertical-1200.jpg' : '6f1f88a98e43377728864a42ad1123126b66c1f7',
319+
'assets/vertical-800.jpg' : '95fbe34e98dd7839b1bde9400f4c7a6784e408b3',
320+
'assets/vertical-500.jpg' : '474242606e782deafe7af976f23513697b622cf4',
321+
'assets/vertical-260.jpg' : '4e49f570413c9f15156b1cf99febe9054e2f294f',
322+
'assets/vertical-150.jpg' : '9d8ec5975d548ee0b2f6f83c5f896c0fcd5d3a88',
323+
'assets/vertical-square-200.jpg': '1d2a9b581b7f989e44384f4eabde1fc5085d20ad',
324+
'assets/vertical-square-50.jpg' : '33e038f5fbcbc92991d68e343733bb0735286243'
325+
};
320326

321327
resize(image, output, function(err, versions) {
322328
assert.ifError(err);
329+
323330
assert(versions instanceof Array);
331+
assert.equal(versions.length, output.versions.length);
324332

325333
for(var i = 0; i < versions.length; i++) {
326-
assert.equal(versions[i].path, paths[i]);
334+
var file = fs.readFileSync(versions[i].path);
335+
var sha = crypto.createHash('sha1').update(file).digest('hex');
336+
337+
assert.equal(sha, checksum[versions[i].path]);
327338
}
328339

329340
done();
@@ -345,23 +356,65 @@ describe('resize()', function() {
345356
output.versions[i].format = 'jpg';
346357
}
347358

348-
var paths = [
349-
'assets/transparent-full.jpg',
350-
'assets/transparent-1200.jpg',
351-
'assets/transparent-800.jpg',
352-
'assets/transparent-500.jpg',
353-
'assets/transparent-260.jpg',
354-
'assets/transparent-150.jpg',
355-
'assets/transparent-square-200.jpg',
356-
'assets/transparent-square-50.jpg'
357-
];
359+
var checksum = {
360+
'assets/transparent-full.jpg' : '78e3647bc9f86f3e0a8a0a25dcc60fba519c29b9',
361+
'assets/transparent-1200.jpg' : '35069de49846815381830b4c46ab90f75eba43aa',
362+
'assets/transparent-800.jpg' : '017ec8afb9a81eae00132105da9cd6ea4083011c',
363+
'assets/transparent-500.jpg' : 'c0705376d473724384e6ed30a1305683023780e9',
364+
'assets/transparent-260.jpg' : '1ccf58141dfa60fe2cc74f024a9df82172e235d4',
365+
'assets/transparent-150.jpg' : 'f46d2e15c618b65d9e082f605e894d5ebd6a5450',
366+
'assets/transparent-square-200.jpg': '012230141cb127947cfe958c452560b7a50d2425',
367+
'assets/transparent-square-50.jpg' : 'ea8a03a6f9acfd1c5170c4b5d382c84aa3b304dc'
368+
};
369+
370+
resize(image, output, function(err, versions) {
371+
assert.ifError(err);
372+
373+
assert(versions instanceof Array);
374+
assert.equal(versions.length, output.versions.length);
375+
376+
for(var i = 0; i < versions.length; i++) {
377+
var file = fs.readFileSync(versions[i].path);
378+
var sha = crypto.createHash('sha1').update(file).digest('hex');
379+
380+
assert.equal(sha, checksum[versions[i].path]);
381+
}
382+
383+
done();
384+
});
385+
});
386+
387+
it('auto-rotates rotated image', function(done) {
388+
this.timeout(10000);
389+
390+
var image = {
391+
path: './assets/autorotate.jpg',
392+
width: 3264,
393+
height: 2448
394+
};
395+
396+
var checksum = {
397+
'assets/autorotate-full.jpg' : 'efe10ac17cae71bd28c316728d6d29eeacc11fd8',
398+
'assets/autorotate-1200.jpg' : 'e8f5b75aa6c9859426c1d652d57a053444f897ff',
399+
'assets/autorotate-800.jpg' : '081df1cc1a3d7d76a0762f0d586dbecff221a25c',
400+
'assets/autorotate-500.jpg' : 'c5437d9b2dbbf791931ca9089020c78ac8fd02a3',
401+
'assets/autorotate-260.jpg' : 'a9b811a19fb078264e655c0c3c01acffda8d192e',
402+
'assets/autorotate-150.jpg' : 'd837d5fb4239f9fe1e3566df34906e3f8d654275',
403+
'assets/autorotate-square-200.jpg': '24efb279a78b0c33a8715215d6f976c1f086573a',
404+
'assets/autorotate-square-50.jpg' : 'f716e975f6269c3b9649a04d4144c5481265169c'
405+
};
358406

359407
resize(image, output, function(err, versions) {
360408
assert.ifError(err);
409+
361410
assert(versions instanceof Array);
411+
assert.equal(versions.length, output.versions.length);
362412

363413
for(var i = 0; i < versions.length; i++) {
364-
assert.equal(versions[i].path, paths[i]);
414+
var file = fs.readFileSync(versions[i].path);
415+
var sha = crypto.createHash('sha1').update(file).digest('hex');
416+
417+
assert.equal(sha, checksum[versions[i].path]);
365418
}
366419

367420
done();

wercker.yml

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,23 @@
1-
box: wercker/nodejs
1+
box: starefossen/iojs-imagemagick:1-6
22
build:
33
steps:
4-
- jshint:
5-
version: 2.6
6-
7-
- npm-install
8-
- npm-test
4+
#- jshint:
5+
# version: 2.6
96

107
- script:
118
name: echo nodejs information
129
code: |
1310
echo "node version $(node -v) running"
1411
echo "npm version $(npm -v) running"
1512
13+
- script:
14+
name: echo imagemagick information
15+
code: |
16+
convert --version
17+
18+
- npm-install
19+
- npm-test
20+
1621
after-steps:
1722
- turistforeningen/slack-notifier:
1823
url: $SLACK_WEBHOOK_URL

0 commit comments

Comments
 (0)