1 | "use strict"
|
2 |
|
3 | var ndarray = require("ndarray")
|
4 | var path = require("path")
|
5 | var pngparse = require("pngparse")
|
6 | var fs = require("fs")
|
7 |
|
8 | function handlePNG(url, cb) {
|
9 | fs.readFile(url, function(err, data) {
|
10 | if(err) {
|
11 | cb(err)
|
12 | return
|
13 | }
|
14 | pngparse.parse(data, function(err, img_data) {
|
15 | if(err) {
|
16 | cb(err)
|
17 | return
|
18 | }
|
19 | cb(null, ndarray.ctor(new Uint8Array(img_data.data),
|
20 | [img_data.width|0, img_data.height|0, 4],
|
21 | [4, img_data.width|0, 1],
|
22 | 0))
|
23 | })
|
24 | })
|
25 | }
|
26 |
|
27 | module.exports = function getPixels(url, cb) {
|
28 | var ext = path.extname(url)
|
29 | switch(ext.toUpperCase()) {
|
30 | case ".PNG":
|
31 | handlePNG(url, cb)
|
32 | break
|
33 |
|
34 | default:
|
35 | process.nextTick(function() {
|
36 | cb(new Error("Unsupported file type: " + ext))
|
37 | })
|
38 | }
|
39 | }
|