Question

Dans le code PHP, étant donné un chemin d'image .png, je dois détecter la profondeur de bits de cette image. Comment puis je faire ça?

J'ai essayé d'utiliser getimagesize () et lire le bits comme ci-dessous un exemple de code, mais il revient toujours '8' pour l'image 24 bits / 32 bits.

S'il vous plaît aide.

class Utils {
    //Ham de lay bits cua image
    public static function getBits($image) {
        $info = getImageSize($image);
        return $info['bits'];
    }
}
Était-ce utile?

La solution

Les images PNG sont pas pris en charge pour canaux et Mèches par getimagesize() . Cependant, vous pouvez utiliser une petite fonction pour obtenir ces valeurs: get_png_imageinfo() :

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

te donne l'exemple image:

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

Il renvoie les canaux et les bits ainsi que certains les attendre de getimagesize() à côté de quelques informations spécifiques au format PNG. Le sens des valeurs à côté de bits et channels sont documentés dans la spécification PNG .

Autres conseils

De la documentation getImageSize :

de bits est le nombre de bits pour chaque couleur.

8 bits est correct, parce que s'il y a trois canaux (RVB) avec huit bits chacun, vous vous retrouvez avec un total de 24 bits. Un canal alpha supplémentaire vous donne encore huit bits, pour un total de 32.

Essayez de revenir à ceci:

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

Cela ne fonctionne pas pour tous les types de type d'image, cependant. Lisez la documentation pour le fonctionnement des gifs et jpegs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top