发布于 2018-02-23 00:17:43
我能想到的最简单的方法是在.identify
方法中使用fx
表达式。
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"
});
或者正如Mark在另一个问题/答案中指出的那样。将图像转换为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"
})
https://stackoverflow.com/questions/48929061
复制相似问题