Как PHP получить глубину данного файла изображения PNG?

StackOverflow https://stackoverflow.com/questions/6355692

  •  28-10-2019
  •  | 
  •  

Вопрос

В коде 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.

Другие советы

От Документация GetImagesize:

Биты - это количество битов для каждого цвета.

Таким образом, 8 битов - это правильно, потому что, если есть три канала (RGB) с восемью битами каждый, вы получите в общей сложности 24 бита. Дополнительный альфа -канал дает вам еще восемь битов, на общую сумму 32.

Попробуйте вернуть это:

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

Однако это не работает для каждого типа изображения. Прочитайте документацию о том, как работают GIF и JPEGS.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top