ImageMagick의 PNM 이미지

PNM 형식은 비트맵 이미지의 RGB 값을 텍스트 문자로 표현할 수 있습니다.
약간의 실험용 이미지를 만드는데 편리하고 이미지의 RGB 값을 확인할 때도 편리합니다.

이미지 생성



다음 요건으로 이미지를 만들어보세요.
  • RGB 이미지 => P3
  • 이미지 크기 width:2 x height:2 => 2 2
  • 색 계조 {0,1} 의 2 계조에서 max 가 1 => 1
  • 빨강 (1 0 0), 황색 (1 1 0), 녹색 (0 1 0), 청색 (0 0 1)
  • 2x2 이미지가 너무 작아서 200x200으로 확대.
  • PNG 이미지로 저장
  • % cat opposite.pnm
    P3
    2 2
    1
    1 0 0  1 1 0
    0 1 0  0 0 1
    % convert opposite.pnm -scale 200x200 opposite.png
    



    개행을 서보할 수 있으므로, 1행 커멘드에도 할 수 있습니다.
    echo "P3 2 2 1 1 0 0 1 1 0 0 1 0 0 0 1" | convert - -scale 200x200 opposite.png 
    

    이미지 덤프



    반대로 PNG를 PNM으로 되돌릴 수도 있습니다.
    % convert opposite.png -scale 2x2 pnm:-
    P6
    2 2
    255
    �����%
    

    BINARY 형식으로 나왔습니다. -compress none 옵션으로 ASCII를 출력할 수 있습니다.
    % convert opposite.png -scale 2x2 -compress none pnm:-
    P3
    2 2
    255
    255 0 0  255 255 0
    0 255 0  0 0 255
    

    256 계조의 빨강(255 0 0), 황색(255 255 0), 녹색(0 255 0), 파랑(0 0 255)이므로 실질적으로 원래대로 돌아가고 있습니다.

    PNM 유형



    PNM은 여러 형식을 정리한 총칭입니다. PNM 패밀리라고 합니다. 텍스트나 바이너리인지, 색깔이 있거나 색이 없는지 등으로 종류가 있습니다.


    매직 넘버
    형식 이름
    데이터 표현
    이미지 표현


    P1
    PBM
    ASCII

    흑백 이미지

    P2
    PGM
    ASCII

    회색 이미지

    P3
    PPM
    ASCII

    컬러 이미지

    P4
    PBM
    Binary

    흑백 이미지

    P5
    PGM
    Binary

    회색 이미지

    P6
    PPM
    Binary

    컬러 이미지

    P7
    PAM
    Binary

    알파가 있는 컬러 이미지

    Pf
    PFM
    Binary

    부동 소수점 형식 그레이 스케일 이미지

    PF
    PFM
    Binary

    부동 소수점 형식 컬러 이미지


    P1(흑백), P2(그레이스케일), P3(컬러)의 실례를 나타냅니다.

    PBM (P1) 흑백


    % cat batsu.pbm
    P1
    5 5
    1 0 0 0 1
    0 1 0 1 0
    0 0 1 0 0
    0 1 0 1 0
    1 0 0 0 1
    % convert batsu.pbm -size 100x100 batsu-P1.png
    


    batsu-P1.png





    그건 그렇고, 1은 검은 색이고 0은 흰색입니다.

    PGM: (P2) 그레이스케일


    % cat batsu.pgm
    P2
    5 5
    4
    4 0 0 0 4
    0 3 0 3 0
    0 0 2 0 0
    0 3 0 3 0
    4 0 0 0 4
    % convert batsu.pgm -scale 100x100 batsu-P2.png
    


    batsu-P2.png





    여기는 0이 검정색이며 최대값(이 예에서는 4)이 흰색입니다.

    PPM: (P3) 색상


    % cat batsu.ppm 
    P3
    5 5
    4
    4 0 0  0 0 0  0 0 0  0 0 0  0 0 4
    0 0 0  3 0 0  0 0 0  0 0 3  0 0 0
    0 0 0  0 0 0  2 2 2  0 0 0  0 0 0
    0 0 0  0 3 0  0 0 0  3 3 0  0 0 0
    0 4 0  0 0 0  0 0 0  0 0 0  4 4 0
    % convert batsu.ppm -scale 100x100 batsu-P3.png
    


    batsu-P3.png





    확장



    P7(PAM), Pf, PF(PFM) 는 좁은 의미의 PNM 패밀리에 들어가지 않고, 확장 포맷 취급되는 것 같습니다. (요출전)
    PAM은 TUPLTYPE 뒤에 RGB 등의 색 컴포넌트 문자열을 붙이는 것으로 다양한 색 표현을 사용할 수 있습니다. 공식 사양에는 없지만 ImageMagick은 CMYK에도 대응하고 있습니다.

    주의



    마지막 개행 (2021년 12월 9일 추가)


  • Unable to read plain encoded PNM files #4546
  • htps : // 기주 b. 코 m / 이마게 마기 ck / 이마게 마기 ck / 이스에 s / 4546


  • 마지막 줄 바꿈으로 끝나지 않는 PNM 이미지는 ImageMagick에서 처리할 수 없습니다.
    Netbpm도 실패합니다. macOS 이미지 미리보기에서도 실패합니다.

    echo 에 -n (개행 없음)을 붙이면 확인할 수 있습니다.
    % echo -n 'P3 2 2 1 1 0 0  1 1 0  0 1 0  0 0 1' | convert - output.png
    convert: unable to read image data `/var/()' @ error/pnm.c/ReadPNMImage/1442.
    convert: no images defined `opposite.png' @ error/convert.c/ConvertImageCommand/3322.
    

    Adobe Phoroshop CC 2020 및 김프 2.10은 이를 읽을 수 있습니다. (macOS 버전에서 확인했습니다)

    참고


  • htps //w w. 이마게마기 ck. 오 rg / sc 리 pt / 후 rma ts. php
  • htp // // tpbm. 그렇게 r세후레. 네 t/도 c/pm. HTML
  • htp // // tpbm. 그렇게 r세후레. 네 t/도 c/pbm. HTML
  • htp // // tpbm. 그렇게 r세후레. 네 t/도 c/pgm. HTML
  • h tp // // tpbm. 그렇게 r세후레. 네 t/도 c/pm. HTML
  • h tp // // tpbm. 그렇게 r세후레. 네 t/도 c/파 m. HTML
  • htp // // tpbm. 그렇게 r세후레. 네 t/도 c/pfm. HTML
  • 좋은 웹페이지 즐겨찾기