【问题标题】:Get image pixels using graphicsmagick使用 graphicsmagick 获取图像像素
【发布时间】:2016-02-26 07:03:52
【问题描述】:

目前我正在使用pngjs,如this answer 中所述,但我想了解如何使用 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) 的最简单方法是什么?

【问题讨论】:

    标签: node.js imagemagick graphicsmagick


    【解决方案1】:

    使用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", ...);
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多