首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取图像的亮度信息,从Imagemagic或Graphicmagic获取

获取图像的亮度信息,从Imagemagic或Graphicmagic获取
EN

Stack Overflow用户
提问于 2018-02-22 21:48:33
回答 1查看 486关注 0票数 1

有没有特定于的函数,可以用来通过Graphicmagick或Imagemagick检索图像的亮度信息。我目前正在使用Node.js aws函数来执行其他操作,比如调整图像大小。

但是我找不到一个正确的方法来检索亮度信息(图像有多暗)。

任何帮助或指导都将是真正有帮助的。

我引用了以下URL。Link 1 Link 2

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-23 00:17:43

我能想到的最简单的方法是在.identify方法中使用fx表达式。

代码语言:javascript
复制
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"
});

正如参考链接所建议的,将图像转换为灰度可能会产生更准确的结果。

代码语言:javascript
复制
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色彩空间可能会更灵活。

代码语言:javascript
复制
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"
})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48929061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档