返回

如何通过 `gm identify` 获取图像的红绿蓝标准差值?

php

如何使用 gm identify 获得图像的红绿蓝标准差值

问题

在使用 gm identify -verbose 查看图像信息时,你会注意到它提供了 绿 通道的 标准差 值,但这些值无法通过 -format 选项直接获取。

解决方法

替代方法:使用 PHP 提取值

如果你是 PHP 开发人员,可以使用以下 PHP 代码提取这些标准差值:

$raw = `gm identify -verbose {$file}`;
preg_match_all("/(?<=Standard Deviation:)(?: +)([\d\.]+)/", $raw, $matches);
$ret = [$matches[1][0], $matches[1][1], $matches[1][2]];

步骤

示例:

下面是一个示例图像的 gm identify -verbose 输出:

Image: /path/to/image.jpg
  Format: JPEG (Joint Photographic Experts Group JFIF format)
  Geometry: 1064x1600
  Class: DirectClass
  Type: true color
  Depth: 8 bits-per-pixel component
  Channel Depths:
    Red:      8 bits
    Green:    8 bits
    Blue:     8 bits
  Channel Statistics:
    Red:
      Minimum:                     0.00 (0.0000)
      Maximum:                   255.00 (1.0000)
      Mean:                      132.32 (0.5189)
      Standard Deviation:         45.92 (0.1801)
    Green:
      Minimum:                     0.00 (0.0000)
      Maximum:                   255.00 (1.0000)
      Mean:                      104.17 (0.4085)
      Standard Deviation:         55.13 (0.2162)
    Blue:
      Minimum:                     0.00 (0.0000)
      Maximum:                   255.00 (1.0000)
      Mean:                      103.61 (0.4063)
      Standard Deviation:         55.71 (0.2185)
  Filesize: 452.0Ki
  Interlace: No
  Orientation: Unknown
  Background Color: white
  Border Color: #DFDFDF
  Matte Color: #BDBDBD
  Page geometry: 1064x1600+0+0
  Compose: Over
  Dispose: Undefined
  Iterations: 0
  Compression: JPEG
  JPEG-Quality: 95
  JPEG-Colorspace: 2
  JPEG-Colorspace-Name: RGB
  JPEG-Sampling-factors: 2x2,1x1,1x1
  Signature: 136912e901ae9314fd683868418cae1f5d838c6891ddd8c13ce28057fb39365a
  Tainted: False
  User Time: 0.010u
  Elapsed Time: 0m:0.014459s
  Pixels Per Second: 112.3Mi

从上面输出的 Channel Statistics 部分中,我们可以提取三个颜色通道的标准差值:

  • 红色: 45.92
  • 绿色: 55.13
  • 蓝色: 55.71

希望这个解决方法对你有帮助!

常见问题解答

问:为什么 -format 选项无法获取这些值?
答:-format 选项用于自定义图像信息的输出格式,但 标准差 值未列在支持的属性列表中。

问:还有其他方法可以提取这些值吗?
答:使用 PHP 或其他编程语言解析 gm identify -verbose 的输出是一种选择。

问:标准差值的单位是什么?
答:标准差值通常以图像像素值的标准差表示,单位为像素。

问:标准差值有什么用?
答:标准差值可以提供图像中颜色分布的洞察,例如它可以指示图像中颜色的亮度或饱和度是否均匀。

问:如何通过命令行获取这些值?
答:当前无法通过命令行直接获取这些值。你需要使用替代方法,例如解析 gm identify -verbose 的输出。