使用graphicsmagick获取图像像素

问题描述:

目前我使用的是pngjs,如this answer中所述,但我想了解如何使用GraphicsMagick获取图像的像素。使用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得到像素信息(r,g,b,a)在给定坐标(x,y)的最简单方法?

使用pngjs库,可以解析来自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", ...); 
    }); 
});