Как PHP получить глубину данного файла изображения PNG?
Вопрос
В коде PHP, учитывая путь. Как я могу это сделать?
Я пытался использовать GetImagesize () и прочитать bits
Как ниже примеры кода, но он всегда возвращает 8 'для 24-битного/32-битного изображения.
Пожалуйста помоги.
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 битов - это правильно, потому что, если есть три канала (RGB) с восемью битами каждый, вы получите в общей сложности 24 бита. Дополнительный альфа -канал дает вам еще восемь битов, на общую сумму 32.
Попробуйте вернуть это:
return $info['channels'] * $info['bits'];
Однако это не работает для каждого типа изображения. Прочитайте документацию о том, как работают GIF и JPEGS.