📜  PHP | imagick statisticImage()函数(1)

📅  最后修改于: 2023-12-03 15:33:33.386000             🧑  作者: Mango

PHP | imagick statisticImage()函数

简介

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
参考