質問

PHPコードでは、.pngイメージパスが与えられた場合、その画像のビット深さを検出する必要があります。どうやってやるの?

getImagesize()を使用しようとしました bits 以下のサンプルコードですが、24ビット/32ビットの画像では常に「8」を返します。

助けてください。

class Utils {
    //Ham de lay bits cua image
    public static function getBits($image) {
        $info = getImageSize($image);
        return $info['bits'];
    }
}
役に立ちましたか?

解決

PNG画像はサポートされていません チャネルビットgetimagesize(). 。ただし、少し関数を使用してこれらの値を取得できます。 get_png_imageinfo():

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

例の写真のためにあなたに与えます:

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

チャンネルとビットも返します。 getimagesize() PNG形式に固有のいくつかの情報の横にあります。ビットとチャネルの横にある値の意味は PNG仕様で文書化されています.

他のヒント

から GetImageSizeドキュメント:

ビットは、各色のビット数です。

8ビットが正しいため、それぞれ8ビットの3つのチャネル(RGB)がある場合、合計24ビットになります。追加のアルファチャネルでは、さらに8ビットが得られ、合計32個が提供されます。

これを返してみてください:

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

ただし、これはあらゆる種類の画像タイプでは機能しません。 GIFとJPEGがどのように機能するかについては、ドキュメントを読んでください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top