Mam plik PNG, ale nie wiem, czy jest to plik PNG-8 czy PNG-24?
źródło
Mam plik PNG, ale nie wiem, czy jest to plik PNG-8 czy PNG-24?
file
Użycie polecenia w innych odpowiedzi jest czasami niespójne. Na przykład:
───────────────────────────────────────────────────────────────────────────────
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
Pierwsze wystąpienie to prawdopodobnie zdjęcie z kamery, a drugie wystąpienie zrobiłem za pomocą zrzutu ekranu.
identify
Komenda, która opiera się na moją odpowiedź, wydaje się działać poprawnie we wszystkich przypadkach. Na przykład testowanie w pierwszej instancji powyżej:
rick@dell:~/Pictures$ identify "256 colors.jpg"
256 colors.jpg JPEG 800x800 800x800+0+0 8-bit sRGB 45KB 0.000u 0:00.000
Mam zainstalowany ImageMagick, który pozwala mi używać:
$ 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
W raporcie podsumowującym pomiń wszystkie parametry:
$ identify vnStat.png
vnStat.png PNG 410x121 410x121+0+0 8-bit sRGB 14.7KB 0.000u 0:00.000
Zamień vnStat.png
na własną .png
nazwę pliku i, jeśli to konieczne, wprowadź ścieżkę.
Aby zrozumieć PNG-24 kontra PNG-32, odpowiedź SuperUser podsumowuje:
Jeśli obraz ma 24 bity, zobaczysz:
Channel depth:
red: 8-bit
green: 8-bit
blue: 8-bit
Jeśli twój obraz PNG jest 32-bitowy, zobaczysz:
Channel depth:
red: 8-bit
green: 8-bit
blue: 8-bit
alpha: 8-bit
Jednak ta odpowiedź nie jest kompletna, ponieważ 8-bitowy kolor pokazuje również 8 bitów dla czerwonego, zielonego i niebieskiego, tylko paleta kolorów jest używana do ograniczenia liczby wyborów (jak w starym dobrym Windows 2.0).
Przejrzyj te trzy zdjęcia z artykułu o Wikipedii :
Nazwa pliku: 8_bit.png
Za pomocą:
identify -verbose 8_bit.png | grep colors
png:PLTE.number_colors: 249
Widzimy, że użyto 249 kolorów. Maksymalnie możliwe przy 8 bitach jest 256 kolorów.
Nazwa pliku: 4_bit.png
Za pomocą:
identify -verbose 4_bit.png | grep colors
png:PLTE.number_colors: 16
Widzimy, że użyto 16 kolorów, co jest maksymalną możliwą kombinacją kolorów z 4 bitami.
Nazwa pliku: 2_bit.png
Za pomocą:
$ identify -verbose 2_bit.png | grep colors
png:PLTE.number_colors: 4
Widzimy, że zastosowano 4 kolory, co jest maksymalną możliwą kombinacją kolorów z 2 bitami.
identify -format %z
- zobacz Opcje formatowania ImageMagick, aby uzyskać więcej.32-bitowy PNG (8 bitów na kanał - w / alfa, zwany także „24-bitowym PNG z 8 bitami alfa” lub „PNG24 z alfa”):
24-bitowy PNG (8 bitów na kanał - bez kanału alfa)
8-bitowy PNG (256 kolorów):
źródło
file
to moje podstawowe narzędzie do identyfikacji plików i zawsze jestem zaskoczony, jak wiele może powiedzieć nawet o egzotycznych formatach plików. To prawda, że jego implementacja znacznie wzrosła od lat 80. :)Jeśli masz zainstalowany exiftool , możesz:
źródło
Sposób hakera: zajrzyj do prawdziwych bajtów w kawałku IHDR PNG .
Pierwsza liczba mówi bitdepth. Drugi rodzaj koloru (2 dotyczy obrazów RGB, to znaczy obrazów z trzema kanałami lub trzema próbkami na piksel).
Dlatego w tym przypadku mamy RGB8 PNG (24 bity na piksel).
źródło
Alternatywą dla powyższego użycia „pliku”, który opiera się na magii pliku w nagłówku pliku PNG, jeśli pracujesz z plikami PNG, warto mieć zainstalowany pakiet „ pngtools ”.
pnginfo może być następnie użyty do podania pełnych szczegółów właściwości pliku PNG, w tym BitDepth (Bits / Sample) (którego nie należy mylić z inną właściwością, Pixel Depth).
Odpowiednikiem plików JPEG jest jpeginfo we własnym pakiecie jpeginfo.
Format danych wyjściowych pnginfo ułatwia wyodrębnienie wartości BitDepth (ponieważ znajduje się ona w osobnym wierszu), jeśli jest używana w skrypcie powłoki.
Jeśli plik nie jest w rzeczywistości plikiem PNG, ponieważ np. Jest to JPEG o niepoprawnej nazwie, pnginfo zgłosi „Ten plik nie jest prawidłowym plikiem PNG”.
Jak zawsze odpowiednie narzędzie do pracy zależy między innymi od tego, jak często będziesz używać tego narzędzia i jak chcesz przetwarzać dane wyjściowe.
źródło