Як дізнатись, чи є PNG PNG-8 або PNG-24?


Відповіді:


25

Використання fileкоманди в інших відповідях іноді непослідовно. Наприклад:

───────────────────────────────────────────────────────────────────────────────
rick@dell:~/Pictures$ file "256 colors.jpg"
256 colors.jpg: JPEG image data, JFIF standard 1.01, resolution (DPI), density 96x96, segment length 16, baseline, precision 8, 800x800, frames 3
───────────────────────────────────────────────────────────────────────────────
rick@dell:~/Pictures$ file "vnStat.png"
vnStat.png: PNG image data, 410 x 121, 8-bit/color RGB, non-interlaced

Перший екземпляр, швидше за все, є фотокамерою, а другий, який я взяв, використовуючи захоплення екрана.

identifyКоманда, моя відповідь заснований на, по- видимому, правильно працювати у всіх випадках. Наприклад тестування в першій інстанції вище:

rick@dell:~/Pictures$ identify "256 colors.jpg"
256 colors.jpg JPEG 800x800 800x800+0+0 8-bit sRGB 45KB 0.000u 0:00.000

У мене встановлено ImageMagick, що дозволяє мені використовувати:

$ identify -verbose vnStat.png
Image: vnStat.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: DirectClass
  Geometry: 410x121+0+0
  Units: Undefined
  Type: TrueColor
  Endianess: Undefined
  Colorspace: sRGB
  Depth: 8-bit
  Channel depth:
    red: 8-bit
    green: 8-bit
    blue: 8-bit
  Channel statistics:
    Pixels: 49610
    Red:
      min: 0 (0)
      max: 255 (1)
      mean: 12.0814 (0.0473779)
      standard deviation: 46.7032 (0.18315)
      kurtosis: 18.8998
      skewness: 4.49862
    Green:
      min: 0 (0)
      max: 255 (1)
      mean: 21.1804 (0.0830606)
      standard deviation: 57.5336 (0.225622)
      kurtosis: 6.68226
      skewness: 2.82613
    Blue:
      min: 0 (0)
      max: 255 (1)
      mean: 14.2606 (0.0559237)
      standard deviation: 50.2969 (0.197243)
      kurtosis: 13.5573
      skewness: 3.85914
  Image statistics:
    Overall:
      min: 0 (0)
      max: 255 (1)
      mean: 15.8408 (0.0621207)
      standard deviation: 51.7078 (0.202776)
      kurtosis: 11.8528
      skewness: 3.62638
  Rendering intent: Perceptual
  Gamma: 0.454545
  Chromaticity:
    red primary: (0.64,0.33)
    green primary: (0.3,0.6)
    blue primary: (0.15,0.06)
    white point: (0.3127,0.329)
  Background color: white
  Border color: srgb(223,223,223)
  Matte color: grey74
  Transparent color: black
  Interlace: None
  Intensity: Undefined
  Compose: Over
  Page geometry: 410x121+0+0
  Dispose: Undefined
  Iterations: 0
  Compression: Zip
  Orientation: Undefined
  Properties:
    date:create: 2017-01-24T20:04:50-07:00
    date:modify: 2017-01-24T20:04:50-07:00
    png:IHDR.bit-depth-orig: 8
    png:IHDR.bit_depth: 8
    png:IHDR.color-type-orig: 2
    png:IHDR.color_type: 2 (Truecolor)
    png:IHDR.interlace_method: 0 (Not interlaced)
    png:IHDR.width,height: 410, 121
    png:sRGB: intent=0 (Perceptual Intent)
    png:text: 1 tEXt/zTXt/iTXt chunks were found
    signature: e9f31b79da6ce46cdea5da21ae8648496faa181b0621098aa2dbbdff4a9a4502
    Software: gnome-screenshot
  Artifacts:
    filename: vnStat.png
    verbose: true
  Tainted: False
  Filesize: 14.7KB
  Number pixels: 49.6K
  Pixels per second: 0B
  User time: 0.000u
  Elapsed time: 0:01.000
  Version: ImageMagick 6.8.9-9 Q16 x86_64 2017-07-31 http://www.imagemagick.org

Для зведеного звіту опустіть усі параметри:

$ identify vnStat.png
vnStat.png PNG 410x121 410x121+0+0 8-bit sRGB 14.7KB 0.000u 0:00.000

Замініть vnStat.pngвласне .pngім’я файлу та передбачте його, якщо це необхідно.


Щоб зрозуміти PNG-24 проти PNG-32, ця відповідь SuperUser резюмує його:

Якщо ваше зображення 24-бітове, ви побачите:

Channel depth:
  red: 8-bit
  green: 8-bit
  blue: 8-bit

Якщо ваше зображення у форматі PNG 32-бітне, ви побачите:

Channel depth:
  red: 8-bit
  green: 8-bit
  blue: 8-bit
  alpha: 8-bit

Однак ця відповідь не є повною, оскільки 8-бітний колір також показує 8 біт для червоного, зеленого та синього кольорів, використовується лише палітра кольорів для обмеження кількості виділень (як, наприклад, у старому доброму Windows 2.0).


Вивчіть ці три фотографії із глибини статті Вікіпедії :

8_bit.png

Назва файлу: 8_bit.png

Використання:

identify -verbose  8_bit.png | grep colors
    png:PLTE.number_colors: 249

Ми бачимо, що використовується 249 кольорів. Максимум з 8 біт - 256 кольорів.


4 біт

Назва файлу: 4_bit.png

Використання:

identify -verbose  4_bit.png | grep colors
    png:PLTE.number_colors: 16

Ми бачимо, що використовується 16 кольорів, що є максимально можливим поєднанням кольорів із 4 бітами.


2_bit.png

Назва файлу: 2_bit.png

Використання:

$ identify -verbose  2_bit.png | grep colors
    png:PLTE.number_colors: 4

Ми бачимо, що використовуються 4 кольори, що є максимально можливим поєднанням кольорів з 2 бітами.


2
Для більш зручного для сценарію формату ви також можете це зробити identify -format %z- див . Параметри -формату ImageMagick для отримання додаткової інформації.
пухнастий

29

32-розрядний PNG (8 біт на канал - з / альфа, також його називають "24-бітний PNG з 8-бітними альфами" або "PNG24 з альфа"):

$ file zyne_zyne.png: 
PNG image data, 64 x 64, 8-bit/color RGBA, non-interlaced

24-бітний PNG (8 біт на канал - немає альфа-каналу)

$ file 24.png
PNG image data, 1060 x 821, 8-bit/color RGB, non-interlaced

8-бітний PNG (256 кольорів):

$ file 8bit.png
PNG image data, 1060 x 821, 8-bit colormap, non-interlaced

І знак мій :-)
Rinzwind

1
Палітра PNG все ще має 8 біт на RGBA компонент, вони обмежені лише 256 записами палітри. (Кожен піксель - це 8-бітний або менший індекс в палітрі, а не зберігання даних пікселів буквально). Не зовсім зрозуміло, що це таке. PNG24 також становить 8 біт на компонент (не 24 біта на компонент). Тож це буде кращою відповіддю, якби ви показали вихід із обох видів PNG.
Пітер Кордес

Я неправильно зрозумів, що ви мали на увазі під «значком» 8 годин тому, але тепер я все-таки спричиняю, що прокинувся з бронзою та сріблом :)
WinEunuuchs2Unix

Знак 1-го по 10-й завжди переможець лише переможець 1-го до 100 ;-)
Rinzwind

1
@evilSnobu> file- це мій основний інструмент ідентифікації файлів, і я завжди вражений тим, наскільки він може розповісти навіть про екзотичні формати файлів. Звичайно, його реалізація зросла зовсім небагато з 80-х років :)
спектри

8

Якщо у вас встановлено exiftool , ви можете зробити:

bash-4.3 # exiftool continents_blank_l.png 
Номер версії ExifTool: 10.20
Назва файлу: continents_blank_l.png
Каталог:.
Розмір файлу: 170 кБ
Дата / Час зміни файлів: 2016: 07: 05 07: 59: 28 + 05: 30
Дата / Час доступу до файлів: 2017: 08: 07 00: 35: 15 + 05: 30
Дата / час зміни файлу Inode: 2016: 07: 05 07: 59: 28 + 05: 30
Дозволи файлу: rw-r - r--
Тип файлу: PNG
Розширення типу файлу: png
Тип MIME: image / png
Ширина зображення: 1100
Висота зображення: 850
Бітова глибина: 8
Тип кольору: RGB з Alpha
Стиснення: зменшення / надуття
Фільтр: Адаптивний
Переплетення: непереплетене
Колір фону: 255 255 255
Пікселі на одиницю X: 3937
Пікселів на одиницю Y: 3937
Піксельні одиниці: метри
Дата зміни: 2016: 07: 05 02:29:28
Розмір зображення: 1100x850
Мегапікселі: 0,935

5

Шлях хакера: зазирнути в реальні байти всередині шматка PNG PNG .

 $ od -j 24 -N 2 -t u1 -An drivemount-applet_open.png
   8   2

Перше число повідомляє вам бітдепт. Другий, кольоровий тип (2 - для RGB-зображень, тобто зображень з трьома каналами або трьома значеннями вибірки на піксель).

Отже, у цьому випадку ми маємо RGB8 PNG (24 біта на піксель).


Це не PNG24 (8 біт на канал)? PNG8 - це 8-бітна кольорова карта = 256 кольорів.
evilSnobu

1
Так, RGB8 відповідає PNG24.
leonbloy

Правильно. Моє ліжко. Я читав це як PNG8, а не RGB8. Ваша відповідь цілком правильна.
evilSnobu

3

В якості альтернативи вищезазначеному використанню "файл", який спирається на магію файлів у заголовку файлу PNG, якщо працювати з файлами PNG, корисно встановити пакет " pngtools ".

Потім pnginfo може використовуватися для отримання повної інформації про властивості файлу PNG, включаючи BitDepth (Bits / Sample) (який не слід плутати з іншим властивістю, Pixel Depth).

 file  Debian_Expo.png

 Debian_Expo.png: PNG image data, 1280 x 1024, 8-bit/color RGB, non-interlaced

 ---

 pnginfo Debian_Expo.png

 Image Width: 1280 Image Length: 1024
 Bitdepth (Bits/Sample): 8
 Channels (Samples/Pixel): 3
 Pixel depth (Pixel Depth): 24
 Colour Type (Photometric Interpretation): RGB 
 ...

Еквівалент для JPEG-файлів - jpeginfo, у власному пакеті jpeginfo.

Формат виводу pnginfo полегшує витяг значення BitDepth (як воно знаходиться в окремому рядку), якщо воно використовується в сценарії оболонки.

Якщо файл насправді не є файлом PNG, оскільки, наприклад, це неправильно названий JPEG, тоді pnginfo повідомить "Цей файл не є дійсним файлом PNG".

Як завжди, відповідний інструмент для роботи визначається, серед іншого, тим, наскільки часто ви збираєтеся використовувати цей інструмент і як ви хочете обробити результат.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.