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에서와 같이).


Wikipedia Depth Article의 다음 세 가지 그림을 살펴 보십시오 .

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

4 비트에서 가능한 최대 색상 조합 인 16 개의 색상이 사용됩니다.


2_bit.png

파일 이름: 2_bit.png

사용 :

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

우리는 2 비트로 가능한 최대 색상 조합 인 4 가지 색상이 사용되었음을 알 수 있습니다.


2
더 스크립트에 편한 형식을 위해 당신은 또한 할 수 identify -format %z- 참조 ImageMagick과의 -format 옵션을 이상.
푹신한

29

32 비트 PNG (채널당 8 비트-알파 포함, "8 비트 알파의 24 비트 PNG"또는 "알파가있는 PNGG24"라고도 함) :

$ 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에는 여전히 RGBA 구성 요소 당 8 비트가 있으며 256 개의 팔레트 항목으로 제한됩니다. 각 픽셀은 문자 그대로 픽셀 데이터를 저장하는 것이 아니라 팔레트에 8 비트 이하의 인덱스입니다. 이것이 무엇인지는 확실하지 않습니다. PNG24는 구성 요소 당 8 비트입니다 (구성 요소 당 24 비트가 아님). 따라서 두 종류의 PNG 모두에서 출력을 표시하면 더 나은 답변입니다.
Peter Cordes

난 당신이 8 시간 전 "배지"의 의미를 오해 무엇을하지만 지금은 내가 : 청동과은으로 일어났다 원인 할
WinEunuuchs2Unix

1 ~ 10 배지는 항상 1 ~ 100까지만이기는 승자입니다. ;-)
Rinzwind

1
@evilSnobu> file는 저의 주요 파일 식별 도구이며, 이국적인 파일 형식에 대해서도 말할 수있는 정도에 항상 놀랐습니다. 허락하신다면, 그 구현은 80 년대 :)부터 꽤 성장
spectras

8

exiftool 이있는 경우 설치되어 수행 할 수 있습니다.

bash-4.3 # exiftool continents_blank_l.png 
ExifTool 버전 ​​번호 : 10.20
파일 이름 : continents_blank_l.png
디렉토리 :.
파일 크기 : 170 kB
파일 수정 날짜 / 시간 : 2016 : 07 : 05 07 : 59 : 28 + 05 : 30
파일 액세스 날짜 / 시간 : 2017 : 08 : 07 00 : 35 : 15 + 05 : 30
파일 아이 노드 변경 날짜 / 시간 : 2016 : 07 : 05 07 : 59 : 28 + 05 : 30
파일 권한 : rw-r--r--
파일 형식 : PNG
파일 형식 확장자 : png
MIME 유형 : image / png
이미지 폭 : 1100
이미지 높이 : 850
비트 깊이 : 8
색상 유형 : 알파 RGB
압축 : 수축 / 팽창
필터 : 적응
인터레이스 : 비 인터레이스
배경색 : 255255255
단위 X 당 픽셀 수 : 3937
단위당 픽셀 Y : 3937
픽셀 단위 : 미터
수정 날짜 : 2016 : 07 : 05 02:29:28
이미지 크기 : 1100x850
메가 픽셀 : 0.935

5

해커의 길 : IHDR PNG 청크 내부의 실제 바이트를 들여다보십시오 .

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

첫 번째 숫자는 깊이를 알려줍니다. 두 번째는 색상 유형입니다 (2는 RGB 이미지, 즉 3 개의 채널이있는 이미지 또는 픽셀 당 3 개의 샘플 값).

따라서이 경우 RGB8 PNG (픽셀 당 24 비트)가 있습니다.


PNG24 (채널당 8 비트)가 아닙니까? PNG8은 8 비트 컬러 맵 = 256 색입니다.
evilSnobu

1
예, RGB8은 PNG24에 해당합니다.
leonbloy

권리. 내 잘못이야. RGB8이 아닌 PNG8로 읽었습니다. 당신의 대답은 전적으로 정확합니다.
evilSnobu

3

PNG 파일의 헤더에있는 파일 마법을 사용하는 위의 "파일"사용에 대한 대안으로 PNG 파일로 작업하는 경우 " pngtools "패키지를 설치 하는 것이 유용합니다 .

그런 다음 pnginfo 를 사용하여 BitDepth (비트 / 샘플) (다른 속성 인 픽셀 깊이와 혼동해서는 안 됨)를 포함하여 PNG 파일의 속성에 대한 자세한 정보를 제공 할 수 있습니다.

 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를 사용하는 경우 별도의 줄에있는 것처럼 BitDepth 값을 쉽게 추출 할 수 있습니다.

파일 이름이 JPEG이기 때문에 실제로 PNG 파일이 아닌 경우 pnginfo는 "이 파일은 유효한 PNG 파일이 아닙니다"라고보고합니다.

항상 작업에 적합한 도구는 도구를 사용하는 빈도와 출력 처리 방법에 따라 결정됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.