Есть ли способ узнать, является ли PNG типом 8 или 24? Я пробовал с окнами, фейерверками и фотошопом, но я не могу понять это. Спасибо
Узнайте, является ли PNG 8 или 24?
Ответы (4)
Откройте его в Photoshop и проверьте, что написано на верхней панели. Если он говорит «индекс», то он был сохранен как 8-битный PNG, если он говорит «RGB/8», то ваш PNG является 32-битным. В качестве альтернативы вы можете открыть меню «Изображение/Режим», и для 8-битного это будет «Индексированный цвет», а для 32-битного - «Цвет RGB».
Еще один очень быстрый способ узнать, не открывая файл, — это посмотреть, есть ли на изображении какие-либо прозрачные плавные градиенты. 8-битные png не имеют прозрачных градиентов — они либо полностью непрозрачны, либо полностью прозрачны (ничего промежуточного).
(для тех у кого нет фотошопа)
Как определить разрядность файлов изображений в Windows:
*Right click* image file > Properties > Details > Bit depth
Самый быстрый способ — просто просмотреть байты 24 и 25 в файле PNG. Они содержат разрядность (1, 2, 4, 8 или 16) и тип цвета.
- 0: серый,
- 2: RGB,
- 3: индексированный (цветовая карта),
- 4: серый+альфа, или
- 6: RGBA.
Если битовая глубина равна 8, а цветовой тип равен 3, у вас есть PNG8, а если битовая глубина равна 8, а цветовой тип равен 2, у вас есть PNG24.
На платформе *nix команда "file" сделает это за вас, например,
PNG8:
glenn.rp> file logo.png
logo.png: PNG image data, 640 x 480, 8-bit colormap, non-interlaced
PNG24:
glenn.rp> file rose.png
rose.png: PNG image data, 70 x 46, 8-bit/color RGB, non-interlaced
Просто добавьте столбец «Битовая глубина», и он должен показать вам битовую глубину прямо в представлении сведений в проводнике.
В среде на базе Linux можно использовать команду file
.
$ file image-1.png
PNG image data, 3840 x 2160, 8-bit/color RGBA, non-interlaced
Таким образом, исходя из приведенного выше вывода, image-1.png имеет четыре канала (RGBA — красный, зеленый, синий, альфа-канал). 8 бит на канал, что в сумме составляет 32 бита.
$ file image-2.png
PNG image data, 3840 x 2160, 8-bit/color RGB, non-interlaced
image-2.png имеет только 3 канала (RGB). У него нет альфа-канала. То есть в формате PNG‑24.
Также есть команда identify
от ImageMagick, которую можно использовать для получения более подробной информации о файлах изображений.
sudo apt-get install imagemagick
identify -verbose image.png
png_read_png()
иpng_get_bit_depth()
иpng_get_channels()
, у вас есть то, что вам нужно. Если вам нужен инструмент командной строки, проверьте ImageMagick (в частности, командуidentify
). - person Kerrek SB   schedule 08.06.2011