5

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'];
    }
}
4

2 に答える 2

8

getImageSizeドキュメントから:

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

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

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

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

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

于 2011-06-15T09:51:28.193 に答える
6

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仕様に記載されています

于 2011-06-21T17:08:18.397 に答える