Grafika\Gd\ImageHash\AverageHash::hash PHP Method

hash() public method

Generate and get the average hash of the image.
public hash ( Image $image, Editor $editor ) : string
$image Grafika\Gd\Image
$editor Grafika\Gd\Editor
return string
    public function hash($image, $editor)
    {
        // Resize the image.
        $width = 8;
        $height = 8;
        $image = clone $image;
        // Make sure we are working on the clone if Image is passed
        $editor->resizeExact($image, $width, $height);
        // Resize to exactly 8x8
        $gd = $image->getCore();
        // Create an array of greyscale pixel values.
        $pixels = array();
        for ($y = 0; $y < $height; $y++) {
            for ($x = 0; $x < $width; $x++) {
                $rgba = imagecolorat($gd, $x, $y);
                $r = $rgba >> 16 & 0xff;
                $g = $rgba >> 8 & 0xff;
                $b = $rgba & 0xff;
                $pixels[] = floor(($r + $g + $b) / 3);
                // Gray
            }
        }
        // Get the average pixel value.
        $average = floor(array_sum($pixels) / count($pixels));
        // Each hash bit is set based on whether the current pixels value is above or below the average.
        $hash = '';
        foreach ($pixels as $pixel) {
            if ($pixel > $average) {
                $hash .= '1';
            } else {
                $hash .= '0';
            }
        }
        return $hash;
    }
AverageHash