使用graphicsmagick获取图像像素

目前我使用pngjs ,就像在这个答案中所描述的,但我想看看如何使用GraphicsMagick获取图像的像素。

我使用gm作为GraphicsMagick的包装。 我找不到任何信息如何获得图像像素。

我想有这样的东西:

 myImg.getPixel(x, y, function (err, pixel) { // pixel: { r: ..., g: ..., b: ..., a: ... } }); 

我想知道如果要toBuffer会帮助:

 gm('img.jpg') .resize(100, 100) .toBuffer('PNG',function (err, buffer) { if (err) return handle(err); console.log('done!'); }) 

有缓冲区,也许我能够以某种方式计算像素的颜色…

使用graphicsmagick获得给定坐标(x,y)的像素信息(r,g,b,a)最简单的方法是什么?

使用pngjs库可以parsing从GraphicsMagick获得的PNG缓冲区:

 const PNG = require("pngjs").PNG , gm = require("gm") ; let img = gm("path/to/image.png"); // Get the PNG buffer img.toBuffer("PNG", (err, buff) => { if (err) { ... } // Get the image size img.size((err, size) => { if (err) { ... } // Parse the PNG buffer let str = new PNG(); str.end(buff); // After it's parsed... str.on("parsed", buffer => { // Get some pixel from the image let x = 27 , y = 9 ; let idx = (size.width * y + x) << 2 , rgb = { r: buffer[idx] , g: buffer[idx + 1] , b: buffer[idx + 2] } ; }); str.on("error", ...); }); });