在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'];
}
}
答案 0 :(得分:8)
位是每种颜色的位数。
所以8位是正确的,因为如果有三个通道(RGB),每个通道有8位,那么最终总共有24位。额外的alpha通道为您提供另外8位,总计32位。
尝试返回此内容:
return $info['channels'] * $info['bits'];
然而,这并不适用于所有类型的图像。阅读有关gif和jpeg如何工作的文档。
答案 1 :(得分:5)
通过getimagesize()
通道和位不支持PNG图像。但是,您可以使用一个小函数来获取这些值: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格式的信息。位和通道旁边的值的含义是documented in the PNG specification。