Die folgende PHP-Code überprüft, ob ein Bild hell oder dunkel ist. Dazu wird zunächst das Bild mit Hilfe der ImageMagick-Bibliothek geladen und auf eine Größe von 1×1 Pixel skaliert. Anschließend wird die Farbe des Pixels ausgelesen und in ein Array gespeichert.
Um die Helligkeit des Bildes zu berechnen, werden die einzelnen Farbkanäle (Rot, Grün, Blau) addiert. Fabei werden die unterschiedlichen Helligkeiten von jedem Farbkanal berücksichtigt. Das Ergebnis wird dann durch 1000 geteilt, um einen Wert zwischen 0 und 1 zu erhalten. Wenn dieser Wert größer als 0,13 (entspricht einem Helligkeitswert von 130) ist, wird das Bild als hell eingestuft und die Funktion gibt true zurück. Andernfalls gibt sie false zurück.
function bin_ich_ein_helles_bild($imagePath){
$image = new Imagick($imagePath);
$image->scaleImage(1, 1, true);
$pixel = $image->getImagePixelColor(0,0);
$color = $pixel->getColor();
//print_r( $color);
// calculate brightness
$brightness = (($color['r'] * 299) + ($color['g'] * 587) + ($color['b'] * 114)) / 1000;
// if brighness is > 130 it is bright
if($brightness > 130) {
$bild_ist_hell = true;
} else {
$bild_ist_hell = false;
}
return $bild_ist_hell;
}
Der folgende PHP-Code verwendet die zuvor definierte Funktion bin_ich_ein_helles_bild()
, um die Helligkeit eines Bildes zu bestimmen. Dazu wird zunächst der Pfad zu dem Bild als String in der Variablen $bild_url
gespeichert. Anschließend wird die Funktion bin_ich_ein_helles_bild()
mit dem Pfad als Argument aufgerufen und das Ergebnis in der Variablen $img_brightness
gespeichert.
Wenn die Funktion zurückgibt, dass das Bild hell ist (mit dem Wert true
), wird die Meldung «Das Bild ist hell.» in $img_brightness
gespeichert. Andernfalls (bei einem Rückgabewert von false
) wird die Meldung «Das Bild ist dunkel.» in $img_brightness
gespeichert.
Schließlich wird der Inhalt der Variable $img_brightness
mithilfe von echo
auf der Webseite ausgegeben.
// $bild_url = hier ein Pfad zu deinem Bild
$bild_url = "https://www.w3schools.com/images/picture.jpg";
$img_brightness = "Die Helligkeit des Bildes ist undefiniert";
if(bin_ich_ein_helles_bild($bild_url)==true){
$img_brightness = "Das Bild ist hell.";
}else{
$img_brightness = "Das Bild ist dunkel.";
};
echo $img_brightness;