📅  最后修改于: 2023-12-03 15:33:33.386000             🧑  作者: Mango
imagick statisticImage()
函数用于获取图像的统计信息,包括最小值、最大值、平均值、标准差等。
public array Imagick::statisticImage(
int $type,
int $channels,
int $skip,
int $histogram
)```
### 参数
`type` : 统计信息类型,可以取值为 `Imagick::STATISTIC_*` 常量,如下:
- `Imagick::STATISTIC_GRADIENT` : 计算图像的梯度大小和方向。
- `Imagick::STATISTIC_MINIMUM` : 计算图像的最小像素值。
- `Imagick::STATISTIC_MAXIMUM` : 计算图像的最大像素值。
- `Imagick::STATISTIC_MEAN` : 计算图像的平均像素值。
- `Imagick::STATISTIC_MEDIAN` : 计算图像的中位数像素值。
- `Imagick::STATISTIC_MODE` : 计算图像的众数像素值。
- `Imagick::STATISTIC_L2` : 计算图像的L2范数(平方和的平方根)。
- `Imagick::STATISTIC_ENTROPY` : 计算图像的熵。
`channels` : 统计信息通道,可以取值为以下常量:
- `Imagick::CHANNEL_DEFAULT`
- `Imagick::CHANNEL_RED`
- `Imagick::CHANNEL_GRAY`
- `Imagick::CHANNEL_CYAN`
- `Imagick::CHANNEL_MAGENTA`
- `Imagick::CHANNEL_YELLOW`
- `Imagick::CHANNEL_BLACK`
- `Imagick::CHANNEL_OPACITY`
- `Imagick::CHANNEL_MATTE`
- `Imagick::CHANNEL_ALL`
`skip` : 跳过的像素数,默认为 0。
`histogram` : 是否启用直方图计算,默认为 `false`。如果启用,则统计信息返回的数组会包括直方图信息。
### 返回值
如果成功,返回一个关联数组,包括以下键值:
- `minimum` : 最小像素值。
- `maximum` : 最大像素值。
- `mean` : 平均像素值。
- `standardDeviation` : 标准差。
- `pixels` : 像素总数。
- `count` : 像素总数(同 `pixels`)。
- `entropy` : 熵。
- `channels` : 统计信息通道。
- `histogram` : 直方图信息,仅当 `histogram` 参数为 true 时返回。
## 例子
以下是一个简单的例子,使用 `Imagick::statisticImage()` 函数获取图像的最小、最大、平均像素值和标准差。
```php
<?php
$imagick = new Imagick('image.jpg');
$statistics = $imagick->statisticImage(Imagick::STATISTIC_MEAN | Imagick::STATISTIC_STANDARD_DEVIATION, false, 0, false);
echo "Minimum pixel value: " . $statistics['minimum'] . "<br>";
echo "Maximum pixel value: " . $statistics['maximum'] . "<br>";
echo "Mean pixel value: " . $statistics['mean'] . "<br>";
echo "Standard deviation: " . $statistics['standardDeviation'] . "<br>";
?>
输出:
Minimum pixel value: 0
Maximum pixel value: 255
Mean pixel value: 122.356261
Standard deviation: 42.3311748