Разберете дали PNG е 8 или 24?

Има ли начин да разберете дали PNG е тип 8 или 24? Опитах с windows, фойерверки и фотошоп, но не мога да разбера това. Благодаря


person Evanss    schedule 08.06.2011    source източник
comment
Използвайте libpng. Има донякъде непрозрачна документация, но след като стигнете до png_read_png() и png_get_bit_depth() и png_get_channels(), имате това, от което се нуждаете. Ако искате инструмент за команден ред, разгледайте ImageMagick (по-специално командата identify).   -  person Kerrek SB    schedule 08.06.2011


Отговори (4)


Отворете го във Photoshop и вижте какво пише в горната лента. Ако пише "индекс", значи е записан като 8-битов PNG, ако пише "RGB/8", значи вашият PNG е 32-битов. Като алтернатива можете да отворите менюто Изображение/Режим и за 8-битов ще бъде "Индексиран цвят", докато за 32-битов - "RGB цвят".

Друг наистина бърз начин да разберете, без да отваряте файла, е да видите дали има плавен градиент прозрачност в изображението. 8-битовите png файлове нямат прозрачни градиенти - те са или напълно непрозрачни, или напълно прозрачни (нищо между тях).

(за тези, които нямат Photoshop)

Как да идентифицирате битовата дълбочина за файлове с изображения в Windows:

*Right click* image file > Properties > Details > Bit depth

„Идентифицирайте

person Thariama    schedule 08.06.2011
comment
просто трябва да кажа, че обичам вашата икона, д-р Снугълс е любимец от детството :-) - person Fredrik Pihl; 08.06.2011
comment
наскоро разбрах, че са създали някои нови епизоди преди няколко години с нова графика, но доколкото успях да кажа, изгледът и усещането са подобни на старите епизоди - person Thariama; 08.06.2011
comment
тогава научих нещо ново в SO днес ;-) отидете сега в Google, за да намерите тези епизоди! - person Fredrik Pihl; 08.06.2011
comment
(offtopic): сега се сещам какво беше това, беше само трейлъра, който видях (youtube. com/watch?v=Ti8nJYmC7W0). няма нови епизоди (нито един, който намерих) :( - person Thariama; 08.06.2011
comment
Но този въпрос не е ли за PNG24? - person Gayan Weerakutti; 23.01.2021

Най-бързият начин е просто да надникнете в байтове 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
person Glenn Randers-Pehrson    schedule 16.09.2016
comment
Това трябва да е приетият отговор. Гарантирам, че почти всички, които са стигнали до тук, са го направили, защото се чудят как да го направят в CODE. - person tayoung; 25.11.2017
comment
@tayoung не, точно това ми трябваше. - person patrick.ryan93; 25.06.2019

Просто добавете колоната „Дълбочина на битовете“ и тя трябва да ви покаже дълбочината на битовете направо в изгледа с подробности във File Explorer.

person Animesh Anand    schedule 12.08.2016

В базирана на 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
person Gayan Weerakutti    schedule 23.01.2021