Skip to content

Commit 8f5a122

Browse files
committed
[#1] add tiff support
1 parent 5324027 commit 8f5a122

File tree

9 files changed

+44
-0
lines changed

9 files changed

+44
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ The following codecs are available for input image files.
7272

7373
- [x] png
7474
- [x] jpeg
75+
- [x] tiff (limited. See https://github.com/Quramy/decode-tiff#compatibility )
7576
- [ ] bmp
7677

7778
`imgDiff` detects the input image format from it's extension name. For example, if the input file name ends with ".jpeg", `imgDiff` attempts to decode in JPEG way regardless of the actual file format.

lib/decode-tiff.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
const fs = require("fs");
2+
const { decode } = require("decode-tiff");
3+
4+
function decodeTiff(filename) {
5+
return new Promise((resolve, reject) => {
6+
fs.readFile(filename, (err, rawBuffer) => {
7+
if (err) return reject(err);
8+
const tiffData = decode(rawBuffer);
9+
resolve(tiffData);
10+
});
11+
});
12+
}
13+
14+
module.exports = decodeTiff;

lib/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ const pixelmatch = require("pixelmatch");
44
const { PNG } = require("pngjs");
55
const decodePng = require("./decode-png");
66
const decodeJpeg = require("./decode-jpeg");
7+
const decodeTiff = require("./decode-tiff");
78
const expand = require("./expand");
89

910
const extensionDecoderMap = { };
@@ -28,6 +29,7 @@ function decode(filename) {
2829

2930
registerDecoder(["png"], decodePng);
3031
registerDecoder(["jpg", "jpeg"], decodeJpeg);
32+
registerDecoder(["tiff"], decodeTiff);
3133

3234
function compare(img1, img2, diffFilename, options) {
3335
const { dataList, width, height } = expand(img1, img2);

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
},
2424
"homepage": "https://github.com/reg-viz/img-diff-js#readme",
2525
"dependencies": {
26+
"decode-tiff": "^0.2.0",
2627
"jpeg-js": "^0.3.3",
2728
"pixelmatch": "^4.0.2",
2829
"pngjs": "^3.2.0"

test/decode-tiff.test.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import test from "ava";
2+
import path from "path";
3+
const decodeTiff = require("../lib/decode-tiff");
4+
5+
test("decode tiff file", async t => {
6+
const file = path.resolve(__dirname, "images/actual.tiff");
7+
const jpeg = await decodeTiff(file);
8+
t.is(typeof jpeg.width, "number");
9+
t.is(typeof jpeg.height, "number");
10+
t.is(jpeg.data.length, jpeg.width * jpeg.height * 4);
11+
});

test/images/actual.tiff

50.1 KB
Binary file not shown.

test/images/expected.tiff

50.1 KB
Binary file not shown.

test/index.test.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,17 @@ test("compare with 2 files whose dimension are different", async t => {
4040
t.truthy(fs.statSync(path.resolve(__dirname, "images/diff_generated.wide.png")));
4141
});
4242

43+
test("compare with 2 jpeg files", async t => {
44+
const diffFilename = path.resolve(__dirname, "images/diff_generated.tiff.png");
45+
rimraf.sync(diffFilename);
46+
const { width, height } = await imgDiff({
47+
diffFilename,
48+
actualFilename: path.resolve(__dirname, "images/actual.tiff"),
49+
expectedFilename: path.resolve(__dirname, "images/expected.tiff"),
50+
});
51+
t.truthy(fs.statSync(path.resolve(__dirname, "images/diff_generated.tiff.png")));
52+
});
53+
4354
test("compare with 2 jpeg files", async t => {
4455
const diffFilename = path.resolve(__dirname, "images/diff_generated.jpg.png");
4556
rimraf.sync(diffFilename);

yarn.lock

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -969,6 +969,10 @@ decamelize@^1.1.2:
969969
version "1.2.0"
970970
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
971971

972+
decode-tiff@^0.2.0:
973+
version "0.2.0"
974+
resolved "https://registry.yarnpkg.com/decode-tiff/-/decode-tiff-0.2.0.tgz#540b2949efedee689e3e20224cc04af6b82ad88a"
975+
972976
deep-equal@^1.0.0:
973977
version "1.0.1"
974978
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"

0 commit comments

Comments
 (0)