是否有特定功能可用于使用Graphicmagick或Imagemagick检索图像的亮度信息。我目前正在使用Node.js aws lambda函数来执行其他操作,例如调整图像大小。
但是我无法找到正确的方法来检索亮度信息(图像有多暗)。
任何帮助或方向都会非常有用。
答案 0 :(得分:2)
我能想到的最简单的方法是使用fx
方法使用.identify
表达式。
var gm = require('gm').subClass({ imageMagick: true });
var filename = 'rose:'
gm(filename).identify({format:'%[fx:lightness]'}, function(err, info){
console.log('Lightness pixel value : ' + info);
//=> "Lightness pixel value : 0.182353"
});
根据参考链接的建议,将图像转换为灰度可能会产生更准确的结果。
var brightness = 0.0;
gm().in(filename).colorspace('GRAY').out('-format').out('%[fx:mean*100]').toBuffer('info', function(err, buffer){
brightness = parseFloat(buffer.toString())
console.log('Gray brightness : ' + brightness)
//=> "Gray brightness : 39.4629"
});
正如马克在另一个问题/答案中指出的那样。将图像转换为HSL颜色空间可能更灵活。
var brightness = 0.0;
gm().in(filename).colorspace('HSL').channel('B').out('-format').out('%[fx:mean*100]').toBuffer('info', function(err, buffer){
brightness = parseFloat(buffer.toString())
console.log('Lightness-channel average : ' + brightness)
//=> "Lightness-channel average : 37.219"
})