【问题标题】:Get brightness info of an image from Imagemagic or Graphicmagic从 Imagemagick 或 Graphicsmagick 获取图像的亮度信息
【发布时间】:2018-02-22 13:48:33
【问题描述】:

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

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

任何帮助或指导都会非常有帮助。

我参考了以下网址。 Link 1 Link 2

【问题讨论】:

  • 没有检测到亮度统计功能。你必须计算它。发布的引用链接向您展示了如何,但是您尝试了什么?
  • 我认为应该有一种直接的方法来获得这些,因为建议的方法有更多的计算,在我的情况下它需要花钱。这就是为什么我一直在寻找一个直接的函数/属性来获取我需要的数据

标签: node.js imagemagick aws-lambda


【解决方案1】:

我能想到的最简单的方法是使用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"
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多