UNPKG

1.12 kBJavaScriptView Raw
1"use strict"
2
3var ndarray = require("ndarray")
4var path = require("path")
5var pngparse = require("pngparse")
6var ppm = require("ppm")
7var pack = require("ndarray-pack")
8var fs = require("fs")
9
10function handlePNG(url, cb) {
11 fs.readFile(url, function(err, data) {
12 if(err) {
13 cb(err)
14 return
15 }
16 pngparse.parse(data, function(err, img_data) {
17 if(err) {
18 cb(err)
19 return
20 }
21 cb(undefined, ndarray(new Uint8Array(img_data.data),
22 [img_data.height|0, img_data.width|0, 4],
23 [4*img_data.width|0, 4, 1],
24 0))
25 })
26 })
27}
28
29function handlePPM(url, cb) {
30 ppm.parse(fs.createReadStream(url), function(err, pixels) {
31 if(err) {
32 cb(err)
33 return
34 }
35 cb(undefined, pack(pixels, "uint8"))
36 })
37}
38
39module.exports = function getPixels(url, cb) {
40 var ext = path.extname(url)
41 switch(ext.toUpperCase()) {
42 case ".PNG":
43 handlePNG(url, cb)
44 break
45
46 case ".PPM":
47 handlePPM(url, cb)
48 break
49
50 default:
51 process.nextTick(function() {
52 cb(new Error("Unsupported file type: " + ext))
53 })
54 }
55}