Как узнать, является ли PNG PNG-8 или PNG-24?

У меня есть файл PNG, но я не могу сказать, это PNG-8 или PNG-24?

11
задан 7 August 2017 в 07:19

15 ответов

Команда 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, на которой мой ответ основан on, кажется, работает правильно во всех случаях. Например, тестирование в первом экземпляре выше:

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 и предисловием его с помощью пути, если необходимо. [ ! d9]

Чтобы понять PNG-24 и PNG-32, этот ответ из ImageMagick суммирует его:

Если ваше изображение 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 бит для Red, Green и Blue, только цветовая палитра используется для ограничения количества выборов (например, в старой доброй Windows 2.0).

Изучите эти три изображения из глубины Википедии:

Wikipedia Depth Article

Имя файла: 8_bit.png

Использование:

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

Мы см. 249 цветов. Максимальное возможное с 8 битами - 256 цветов.

Имя файла: 4_bit.png

Использование:

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

Мы видим, что используются 16 цветов, которые являются максимальными комбинациями цветов с четырьмя битами.

Имя файла: 2_bit.png

Использование:

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

Мы видим, что используются четыре цвета, которые являются максимальными комбинациями цветов с двумя битами.

22
ответ дан 22 May 2018 в 19:45
  • 1
    Для более удобного для записи формата вы также можете сделать identify -format %z - см. параметры ImageMagick -format для более подробной информации. – fluffy 7 August 2017 в 00:45

Команда 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, на которой мой ответ основан on, кажется, работает правильно во всех случаях. Например, тестирование в первом экземпляре выше:

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 и предисловием его с помощью пути, если необходимо. [ ! d9]

Чтобы понять PNG-24 и PNG-32, этот ответ из ImageMagick суммирует его:

Если ваше изображение 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 бит для Red, Green и Blue, только цветовая палитра используется для ограничения количества выборов (например, в старой доброй Windows 2.0).

Изучите эти три изображения из глубины Википедии:

Wikipedia Depth Article

Имя файла: 8_bit.png

Использование:

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

Мы см. 249 цветов. Максимальное возможное с 8 битами - 256 цветов.

Имя файла: 4_bit.png

Использование:

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

Мы видим, что используются 16 цветов, которые являются максимальными комбинациями цветов с четырьмя битами.

Имя файла: 2_bit.png

Использование:

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

Мы видим, что используются четыре цвета, которые являются максимальными комбинациями цветов с двумя битами.

22
ответ дан 18 July 2018 в 08:58

Команда 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, на которой мой ответ основан on, кажется, работает правильно во всех случаях. Например, тестирование в первом экземпляре выше:

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 и предисловием его с помощью пути, если необходимо. [ ! d9]

Чтобы понять PNG-24 и PNG-32, этот ответ из ImageMagick суммирует его:

Если ваше изображение 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 бит для Red, Green и Blue, только цветовая палитра используется для ограничения количества выборов (например, в старой доброй Windows 2.0).

Изучите эти три изображения из глубины Википедии:

Wikipedia Depth Article

Имя файла: 8_bit.png

Использование:

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

Мы см. 249 цветов. Максимальное возможное с 8 битами - 256 цветов.

Имя файла: 4_bit.png

Использование:

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

Мы видим, что используются 16 цветов, которые являются максимальными комбинациями цветов с четырьмя битами.

Имя файла: 2_bit.png

Использование:

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

Мы видим, что используются четыре цвета, которые являются максимальными комбинациями цветов с двумя битами.

22
ответ дан 24 July 2018 в 19:13

32-битный PNG (8 бит на канал - w / alpha, также называемый «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
28
ответ дан 22 May 2018 в 19:45
  • 1
    И значок мой :-) – Rinzwind 7 August 2017 в 09:17
  • 2
    Палитра PNG по-прежнему имеет 8 бит на компонент RGBA, они ограничены только 256 палитру. (Каждый пиксель является индексом 8 бит или меньше в палитре, а не сохраняет данные пикселя буквально). Не совсем ясно, что это. PNG24 также 8 бит на компонент (не 24 бит на компонент). Таким образом, это было бы лучшим ответом, если бы вы показали выход из обоих видов PNG. – Peter Cordes 7 August 2017 в 11:37
  • 3
    Я неправильно понял, что вы имели в виду под «значком». 8 часов назад, но теперь я делаю, потому что проснулся с бронзой и серебром :) – WinEunuuchs2Unix 7 August 2017 в 17:44
  • 4
    Значок от 1 до 10 всегда побеждает только с 1 по 100 ;-) – Rinzwind 7 August 2017 в 17:45
  • 5
    @ EvilSnobu & GT; file - мой основной инструмент идентификации файлов, и я всегда удивляюсь, насколько он может сказать даже об экзотических форматах файлов. Разумеется, его реализация значительно выросла с 80-х годов :) – spectras 8 August 2017 в 00:49

Если у вас установлен exiftool, вы можете сделать:

bash-4.3# exiftool continents_blank_l.png ExifTool Version Number : 10.20 File Name : continents_blank_l.png Directory : . File Size : 170 kB File Modification Date/Time : 2016:07:05 07:59:28+05:30 File Access Date/Time : 2017:08:07 00:35:15+05:30 File Inode Change Date/Time : 2016:07:05 07:59:28+05:30 File Permissions : rw-r--r-- File Type : PNG File Type Extension : png MIME Type : image/png Image Width : 1100 Image Height : 850 Bit Depth : 8 Color Type : RGB with Alpha Compression : Deflate/Inflate Filter : Adaptive Interlace : Noninterlaced Background Color : 255 255 255 Pixels Per Unit X : 3937 Pixels Per Unit Y : 3937 Pixel Units : meters Modify Date : 2016:07:05 02:29:28 Image Size : 1100x850 Megapixels : 0.935
8
ответ дан 22 May 2018 в 19:45

Путь хакера: загляните в реальные байты внутри блока PNG IHDR.

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

Первое число сообщает вам битдепт. Второй блок IHDR PNG (2 предназначен для изображений RGB, то есть изображений с тремя каналами или трех значений образца на пиксель).

Следовательно, в этом случае мы имеем RGB8 PNG (24 бит на пиксель).

5
ответ дан 22 May 2018 в 19:45
  • 1
    Разве это не PNG24 (8 бит на канал)? PNG8 - это 8-битный colormap = 256 цветов. – evilSnobu 8 August 2017 в 21:25
  • 2
    Да, RGB8 соответствует PNG24. – leonbloy 8 August 2017 в 21:29
  • 3
    Правильно. Виноват. Я читал, что PNG8 не RGB8. Ваш ответ полностью верен. – evilSnobu 8 August 2017 в 22:19

В качестве альтернативы вышеупомянутому использованию «файла», который полагается на магию файлов в заголовке PNG-файла, при работе с файлами PNG полезно иметь пакет pngtools.

pngtools можно затем использовать, чтобы дать полную информацию о свойствах файла PNG, включая BitDepth (бит / образец) (который не следует путать с другим свойством Pixel Глубина).

 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 ».

Как всегда подходящий инструмент для задания определяется, среди прочего, тем, как часто вы собираетесь использовать этот инструмент и как вы хотите обработать вывод .

3
ответ дан 22 May 2018 в 19:45

32-битный PNG (8 бит на канал - w / alpha, также называемый «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
28
ответ дан 18 July 2018 в 08:58

Если у вас установлен exiftool, вы можете сделать:

bash-4.3# exiftool continents_blank_l.png ExifTool Version Number : 10.20 File Name : continents_blank_l.png Directory : . File Size : 170 kB File Modification Date/Time : 2016:07:05 07:59:28+05:30 File Access Date/Time : 2017:08:07 00:35:15+05:30 File Inode Change Date/Time : 2016:07:05 07:59:28+05:30 File Permissions : rw-r--r-- File Type : PNG File Type Extension : png MIME Type : image/png Image Width : 1100 Image Height : 850 Bit Depth : 8 Color Type : RGB with Alpha Compression : Deflate/Inflate Filter : Adaptive Interlace : Noninterlaced Background Color : 255 255 255 Pixels Per Unit X : 3937 Pixels Per Unit Y : 3937 Pixel Units : meters Modify Date : 2016:07:05 02:29:28 Image Size : 1100x850 Megapixels : 0.935
8
ответ дан 18 July 2018 в 08:58

В качестве альтернативы вышеупомянутому использованию «файла», который полагается на магию файлов в заголовке PNG-файла, при работе с файлами PNG полезно иметь пакет pngtools.

pngtools можно затем использовать, чтобы дать полную информацию о свойствах файла PNG, включая BitDepth (бит / образец) (который не следует путать с другим свойством Pixel Глубина).

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 ».

Как всегда подходящий инструмент для задания определяется, среди прочего, тем, как часто вы собираетесь использовать этот инструмент и как вы хотите обработать вывод .

3
ответ дан 18 July 2018 в 08:58

Путь хакера: загляните в реальные байты внутри блока PNG IHDR.

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

Первое число сообщает вам битдепт. Второй блок IHDR PNG (2 предназначен для изображений RGB, то есть изображений с тремя каналами или трех значений образца на пиксель).

Следовательно, в этом случае мы имеем RGB8 PNG (24 бит на пиксель).

5
ответ дан 18 July 2018 в 08:58

32-битный PNG (8 бит на канал - w / alpha, также называемый «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
28
ответ дан 24 July 2018 в 19:13
  • 1
    И значок мой :-) – Rinzwind 7 August 2017 в 09:17
  • 2
    Палитра PNG по-прежнему имеет 8 бит на компонент RGBA, они ограничены только 256 палитру. (Каждый пиксель является индексом 8 бит или меньше в палитре, а не сохраняет данные пикселя буквально). Не совсем ясно, что это. PNG24 также 8 бит на компонент (не 24 бит на компонент). Таким образом, это было бы лучшим ответом, если бы вы показали выход из обоих видов PNG. – Peter Cordes 7 August 2017 в 11:37
  • 3
    Я неправильно понял, что вы имели в виду под «значком». 8 часов назад, но теперь я делаю, потому что проснулся с бронзой и серебром :) – WinEunuuchs2Unix 7 August 2017 в 17:44
  • 4
    Значок от 1 до 10 всегда побеждает только с 1 по 100 ;-) – Rinzwind 7 August 2017 в 17:45
  • 5
    @ EvilSnobu & GT; file - мой основной инструмент идентификации файлов, и я всегда удивляюсь, насколько он может сказать даже об экзотических форматах файлов. Разумеется, его реализация значительно выросла с 80-х годов :) – spectras 8 August 2017 в 00:49

Если у вас установлен exiftool, вы можете сделать:

bash-4.3# exiftool continents_blank_l.png ExifTool Version Number : 10.20 File Name : continents_blank_l.png Directory : . File Size : 170 kB File Modification Date/Time : 2016:07:05 07:59:28+05:30 File Access Date/Time : 2017:08:07 00:35:15+05:30 File Inode Change Date/Time : 2016:07:05 07:59:28+05:30 File Permissions : rw-r--r-- File Type : PNG File Type Extension : png MIME Type : image/png Image Width : 1100 Image Height : 850 Bit Depth : 8 Color Type : RGB with Alpha Compression : Deflate/Inflate Filter : Adaptive Interlace : Noninterlaced Background Color : 255 255 255 Pixels Per Unit X : 3937 Pixels Per Unit Y : 3937 Pixel Units : meters Modify Date : 2016:07:05 02:29:28 Image Size : 1100x850 Megapixels : 0.935
8
ответ дан 24 July 2018 в 19:13

В качестве альтернативы вышеупомянутому использованию «файла», который полагается на магию файлов в заголовке PNG-файла, при работе с файлами PNG полезно иметь пакет pngtools.

pngtools можно затем использовать, чтобы дать полную информацию о свойствах файла PNG, включая BitDepth (бит / образец) (который не следует путать с другим свойством Pixel Глубина).

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 ».

Как всегда подходящий инструмент для задания определяется, среди прочего, тем, как часто вы собираетесь использовать этот инструмент и как вы хотите обработать вывод .

3
ответ дан 24 July 2018 в 19:13

Путь хакера: загляните в реальные байты внутри блока PNG IHDR.

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

Первое число сообщает вам битдепт. Второй блок IHDR PNG (2 предназначен для изображений RGB, то есть изображений с тремя каналами или трех значений образца на пиксель).

Следовательно, в этом случае мы имеем RGB8 PNG (24 бит на пиксель).

5
ответ дан 24 July 2018 в 19:13
  • 1
    Разве это не PNG24 (8 бит на канал)? PNG8 - это 8-битный colormap = 256 цветов. – evilSnobu 8 August 2017 в 21:25
  • 2
    Да, RGB8 соответствует PNG24. – leonbloy 8 August 2017 в 21:29
  • 3
    Правильно. Виноват. Я читал, что PNG8 не RGB8. Ваш ответ полностью верен. – evilSnobu 8 August 2017 в 22:19

Другие вопросы по тегам:

Похожие вопросы: