返回
如何通过 `gm identify` 获取图像的红绿蓝标准差值?
php
2024-03-03 05:55:12
如何使用 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
的输出。