Poměr bílé barvy v obrázku v php

Následují kus kódu udělá přesně to, co je v nadpisu. Prakticky převede obrázek (jpg) do 256 barev, projde pixel po pixelu a zjistí jejich barvy. Pokud je bílá (s nějakou malou rezervou), tak se zaznamená. No a na konec se vypočte poměr vůči všem pixelům.

Před vlastní aplikací doporučuji, pokud je obrázek příliš velký, jeho zmenšení. Mělo by stačit v pohodě maximálně 1000px na delší stranu.

$tmp = imagecreatefromjpeg($file);
$width = imagesX($tmp);
$height = imagesY($tmp);
$pixels = $width * $height;
imagetruecolortopalette($tmp, false, 256);
$white = 0;
for ($i=0;$i<$height;$i++) {
  for ($j=0;$j<$width;$j++) {
    $rgb=imagecolorsforindex($tmp,imagecolorat($tmp,$j,$i));
    if ($rgb['red']>=245 && $rgb['green']>=245 && $rgb['blue']>=245) {
      $white++;
    }
  }
}
$ratio = round($white/$pixels*100);