特定のPNG画像ファイルのビット深度をPHPする方法は?
質問
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仕様で文書化されています.
他のヒント
ビットは、各色のビット数です。
8ビットが正しいため、それぞれ8ビットの3つのチャネル(RGB)がある場合、合計24ビットになります。追加のアルファチャネルでは、さらに8ビットが得られ、合計32個が提供されます。
これを返してみてください:
return $info['channels'] * $info['bits'];
ただし、これはあらゆる種類の画像タイプでは機能しません。 GIFとJPEGがどのように機能するかについては、ドキュメントを読んでください。
所属していません StackOverflow