Documentación offline PHP master

Imagick::getImageHistogram

master Ver versión oficial en línea Licencia CC-BY-3.0Descargado el 2026-08-02

En esta página

Imagick::getImageHistogram

Devuelve el histograma de la imagen

Descripción#

public Imagick::getImageHistogram(): array
```php

Devuelve el histograma de la imagen, en forma de un array de objetos `ImagickPixel`.

## Parámetros

Esta función no contiene ningún parámetro.

## Valores devueltos

Devuelve un array de objetos `ImagickPixel`.

## Errores/Excepciones

Lanza una ImagickException en caso de error.

## Ejemplos

Ejemplo con `Imagick::getImageHistogram`
getColorValue($colorChannel); $color = intval($color * 255); $count = $histogramElement->getColorCount(); if (array_key_exists($color, $colorStatistics)) { $colorStatistics[$color] += $count; } else { $colorStatistics[$color] = $count; } } ksort($colorStatistics); return $colorStatistics; } function getImageHistogram($imagePath) { $backgroundColor = 'black'; $draw = new \ImagickDraw(); $draw->setStrokeWidth(0); // hace las líneas lo más finas posible $imagick = new \Imagick(); $imagick->newImage(500, 500, $backgroundColor); $imagick->setImageFormat("png"); $imagick->drawImage($draw); $histogramWidth = 256; $histogramHeight = 100; // la altura de cada segmento RGB $imagick = new \Imagick(realpath($imagePath)); //Redimensionar la imagen para que sea pequeña, de lo contrario PHP tiende a quedarse sin memoria //Esto podría llevar a resultados incorrectos para imágenes que son patológicamente 'pixeladas' $imagick->adaptiveResizeImage(200, 200, true); $histogramElements = $imagick->getImageHistogram(); $histogram = new \Imagick(); $histogram->newpseudoimage($histogramWidth, $histogramHeight * 3, 'xc:black'); $histogram->setImageFormat('png'); $getMax = function ($carry, $item) { if ($item > $carry) { return $item; } return $carry; }; $colorValues = [ 'red' => getColorStatistics($histogramElements, \Imagick::COLOR_RED), 'lime' => getColorStatistics($histogramElements, \Imagick::COLOR_GREEN), 'blue' => getColorStatistics($histogramElements, \Imagick::COLOR_BLUE), ]; $max = array_reduce($colorValues['red'] , $getMax, 0); $max = array_reduce($colorValues['lime'] , $getMax, $max); $max = array_reduce($colorValues['blue'] , $getMax, $max); $scale = $histogramHeight / $max; $count = 0; foreach ($colorValues as $color => $values) { $draw->setstrokecolor($color); $offset = ($count + 1) * $histogramHeight; foreach ($values as $index => $value) { $draw->line($index, $offset, $index, $offset - ($value * $scale)); } $count++; } $histogram->drawImage($draw); header( "Content-Type: image/png" ); echo $histogram; } ?>

```php