在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'];
}
}
Run Code Online (Sandbox Code Playgroud)
bits是每种颜色的位数.
所以8位是正确的,因为如果有三个通道(RGB),每个通道有8位,那么最终总共有24位.额外的alpha通道为您提供另外8位,总共32位.
尝试返回此:
return $info['channels'] * $info['bits'];
Run Code Online (Sandbox Code Playgroud)
但是,这并不适用于各种图像类型.阅读有关gif和jpegs如何工作的文档.
PNG图像是不是支持渠道和位通过getimagesize().但是,您可以使用一个小函数来获取这些值get_png_imageinfo():
$file = 'Klee_-_Angelus_Novus.png';
$info = get_png_imageinfo($file);
print_r($info);
Run Code Online (Sandbox Code Playgroud)
为您提供示例图片:
Array
(
[bit-depth] => 4
[bits] => 4
[channels] => 1
[color] => 3
[color-type] => Indexed-colour
[compression] => 0
[filter] => 0
[height] => 185
[interface] => 0
[width] => 291
)
Run Code Online (Sandbox Code Playgroud)
它返回通道和位,就像有些人希望它们可以从getimagesize()PNG格式特有的更多信息旁边看到的那样.PNG规范中记录了位和通道旁边的值的含义.