Frage

In PHP-Code muss ich bei einem .png-Bildpfad das Bittiesttiefel dieses Bildes erkennen. Wie kann ich das machen?

Ich habe versucht, GetImageSize () zu verwenden und das zu lesen bits Wie unter dem Beispielcode, aber es gibt immer '8' für 24-Bit/32-Bit-Bild zurück.

Bitte helfen Sie.

class Utils {
    //Ham de lay bits cua image
    public static function getBits($image) {
        $info = getImageSize($image);
        return $info['bits'];
    }
}
War es hilfreich?

Lösung

PNG -Bilder werden nicht so unterstützt Kanäle und Bits durch getimagesize(). Sie können jedoch eine kleine Funktion verwenden, um diese Werte zu erhalten: get_png_imageinfo():

$file = 'Klee_-_Angelus_Novus.png';
$info = get_png_imageinfo($file);
print_r($info);

Gibt Ihnen das Beispielbild:

Array
(
    [bit-depth] => 4
    [bits] => 4
    [channels] => 1
    [color] => 3
    [color-type] => Indexed-colour
    [compression] => 0
    [filter] => 0
    [height] => 185
    [interface] => 0
    [width] => 291
)

Es gibt auch die Kanäle und Teile zurück, wie es einige von ihnen erwarten würden getimagesize() Neben einigen weiteren Informationen, die für das PNG -Format spezifisch sind. Die Bedeutung der Werte neben Bits und Kanälen ist in der PNG -Spezifikation dokumentiert.

Andere Tipps

Von dem GetImagesize -Dokumentation:

Bits ist die Anzahl der Bits für jede Farbe.

8 Bit sind also korrekt, denn wenn es drei Kanäle (RGB) mit jeweils acht Bit gibt, erhalten Sie insgesamt 24 Bit. Ein zusätzlicher Alpha -Kanal bietet Ihnen weitere acht Bits mit insgesamt 32.

Versuchen Sie, dies zurückzugeben:

return $info['channels'] * $info['bits'];

Dies funktioniert jedoch nicht für jede Art von Bildtyp. Lesen Sie die Dokumentation für die Funktionsweise von GIFs und JPEGs.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top