目前我正在使用 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)的最简单方法是什么?
最佳答案
使用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", ...);
});
});
关于node.js - 使用graphicsmagick获取图像像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35645523/