넷플BM

Netpbm
넷플BM
개발자제프 포스칸저, 브라이언 헨더슨, 아키라 F 우루시바타[1]
초기 릴리즈1988; 34년 전 (1998년)
안정적 해제
10.47.61 / 2016년 5월 9일; 5년(2016-05-09)
리포지토리
기록 위치C, Perl, Unix Shell
운영 체제크로스 플랫폼
면허증다양하며, DFSG가 없는 것으로 판단됨
웹사이트netpbm.sourceforge.그물을 치다 Edit this at Wikidata

Netpbm(이전의 Pbmplus)은 그래픽 프로그램과 프로그래밍 라이브러리의 오픈 소스 패키지다.주요 오픈소스 운영체제 배포에 포함된 것을 모두 찾을 수 있는 유닉스 세계에서 주로 사용되지만, 마이크로소프트 윈도, 맥OS, 기타 운영체제에서도 작동한다.[2]

파일 형식

휴대용 픽스맵
파일 이름 확장명
.pbm, .pgm, .nm, .pnm
인터넷 미디어 유형
image/x-portable-bitmap,[3][4][5] image/x-portable-map, image/x-portable-map[6]
동일 유형 식별자(UTI)public.pbm
개발자제프 포스칸저
형식 유형이미지 파일 형식
까지 확장PAM(Portable Arbitrary Map)
오픈 포맷?

Netpbm 프로젝트에서 몇 가지 그래픽 형식을 사용하고 정의한다.PPM(Portable Pixmap Format), PGM(Portable Graymap Format), PBM(Portable Bitmap Format)은 플랫폼 간에 쉽게 교환할 수 있도록 설계된 이미지 파일 형식이다.그것들은 관련 휴대용 임의 지도 형식(PAM)과 혼동되지 않도록 휴대형 애니맵 형식(PNM)이라고도 한다.[6][7]가능한 경우 올바른 확장자를 사용하는 것이 가장 좋은 방법이지만 파일 시작 부분의 "마법 번호"(Px)가 파일 확장자가 아닌 유형을 결정한다.

PBM 형식은 1980년대 제프 포스칸저에 의해 전자우편 메시지 내에서 단색 비트맵을 일반 ASCII 텍스트로 전송하여 텍스트 형식상의 어떤 변화에서도 살아남을 수 있도록 하는 형식으로 발명되었다.[7]포스칸저는 1988년에 발매된 PBM 포맷 Pbmplus를 처리하기 위한 최초의 도구 라이브러리를 개발했다.주로 PBM과 다른 그래픽 포맷 간에 변환할 수 있는 도구가 들어 있었다.1988년 말까지 Poskanzer는 관련 도구와 함께 PGM과 PPM 형식을 개발하여 Pbmplus에 추가하였다.Pbmplus의 최종 발매는 1991년 12월 10일이었다.

1993년 정비되지 않은 Pbmplus를 대체하기 위해 Netpbm 라이브러리가 개발되었다.그야말로 전 세계 사람들이 제출한 추가와 수정사항으로 Pbmplus를 다시 포장한 것이었다.[1]

설명

각 파일은 파일 형식(PBM, PGM, PPM)과 그 인코딩(ASCII/"plain" 또는 이진/"raw")을 식별하는 2바이트 매직넘버(ASCII)로 시작한다.매직넘버는 대문자 P에 이어 한자릿수다.

유형 매직넘버 확장 컬러스
ASCII(일반) 이진(원시)
휴대용 비트맵 P1 P4 .pbm 0–1 (흰색 & 검은색)
휴대용 그레이맵 P2 P5 .pgm 0–105(백분율), 0–65535(백분율), 변수, 흑백 범위
휴대용 픽스맵 P3 P6 .ppm 16777216(각 RGB 채널에 대해 0–255), 일부 채널은 채널당 0-65535를 지원한다.

A 값P7netpbm 라이브러리에서도 적용되는 PAM 파일 형식을 가리킨다.[8]

ASCII("plain") 형식은 인간의 가독성과 다른 플랫폼으로의 손쉬운 전송을 허용한다. 이진("원시") 형식은 파일 크기가 더 효율적이지만 기본 바이트 순서 문제가 있을 수 있다.

바이너리 형식에서 PBM은 픽셀당 1비트를, PGM은 픽셀당 8비트 또는 16비트를, PPM은 픽셀당 24비트를 사용한다: 빨강 8비트, 녹색 8비트, 파랑 8비트.일부 독자와 작가들은 픽셀당 48비트(R, G,B의 경우 각각 16비트)를 지원할 수 있지만, 이는 여전히 드문 일이다.

일반적으로 PGM은 값을 선형 색상 공간에 저장하지만 용도에 따라 sRGB나 단순화된 감마 표현을 사용하는 경우가 많다.파일 데이터는 어떤 색 공간을 사용하는지 정보를 저장하지 않으며, 사용자나 다른 소프트웨어에 의해 선택되어야 한다. 16비트 PGM은 대개 8비트 형식에서만 감마 보정이 유리하기 때문에 거의 항상 선형적으로 저장된다.

일반적으로 8비트 PPM 형식은 CIE rec. 709 감마 전달 함수에 의해 조정된 적색, 녹색, 청색의 경우 CIE rec. 709를 비선형 형식으로 저장한다.그러나 sRGB 색 공간을 사용하거나 때로는 선형 색 공간을 사용하여 색상을 저장하는 것이 매우 일반적이다.파일에는 사용 중인 형식을 나타내는 메타데이터가 없다.

PBM 예제

PBM 형식의 간단한 예는 다음과 같다(각 줄의 끝에 뉴라인 문자가 있다).

P1 # 문자 "J" 6 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0의 비트맵 예시

P1 문자열은 파일 형식을 식별한다.숫자표지판에 댓글을 달았다.다음 두 숫자는 너비와 높이를 나타낸다.그런 다음 픽셀 값으로 매트릭스를 따르십시오(여기서는 단색 케이스에서 0과 1만).

화소가 잘 정렬되어 있을 필요는 없지만, 이 형식은 데이터 섹션의 화이트스페이스와 라인 피드를 무시한다. 단, 어떤 라인도 76자를 넘지 않는 것이 권장된다.다음은 동일한 이미지를 표시한다.

P1 # 문자 "J" 6 10 000010000010000010000010000010000010000010000010000010000010100010010000000000000000의 예시 비트맵이다.

결과 이미지는 다음과 같다.

Example of ASCII-art turned into a bitmap.pbm.png

여기서 다시 20배로 확대된다.

Example of ASCII-art turned into a bitmap scale20.pbm.png

0은 흰색 픽셀을, 1은 검은색 픽셀을 의미한다.이것은 높은 값이 더 밝은 픽셀을 나타내는 다른 형식과는 대조적이다.

동일한 영상의 P4 바이너리 형식은 바이트당 8픽셀을 패킹하는 단일 비트로 각 픽셀을 나타내며 첫 번째 픽셀을 가장 중요한 비트로 한다.각 행의 끝에 여분의 비트가 추가되어 바이트 전체를 채운다.

PGM 예제

PGM과 PPM 형식(ASCII와 이진수 버전 모두)은 X와 Y 치수 이후와 실제 픽셀 데이터 이전의 최대값(검정색과 흰색 사이의 회색 번호)에 대한 추가 파라미터를 가지고 있다.검은색은 0이고 최대값은 흰색이다.각 행의 끝에는 뉴라인 문자가 있다.

예제(확대)
P2 # Shows the word "FEEP" (example from Netpbm man page on PGM) 24 7 15 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 0  3  3  3  3  0  0  7  7  7  7  0  0 11 11 11 11  0  0 15 15 15 15  0 0  3  0  0  0  0  0  7  0  0  0  0  0 11  0  0  0  0  0 15  0  0 15  0 0  3  3  3  0  0  0  7  7  7  0  0  0 11 11 11  0  0  0 15 15 1515  0 0  3  0  0  0  0  0  7  0  0  0  0  0 11  0  0  0  0  0 15  0  0  0  0 0  3  0  0  0  0  0  7  7  7  7  0  0 11 11 11 11  0  0 15  0  0  0  0 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0

PPM 예제

PPM 형식으로 저장된 컬러 RGB 영상의 예다.각 행의 끝에는 뉴라인 문자가 있다.

이미지(확대)
P3 # "P3"은 이것이 ASCII 3 2 # "3 2"는 픽셀 255 # "255"는 이미지의 폭과 높이로 각 색상에 대한 최대값이다 # 위의 부분은 헤더 # 이미지 데이터: RGB 트리플츠 255 0 # 녹색 0 255 # 파란색 255 0 255 # 노란색 2555 255 255 # 흰색 0 0 # 검은색

동일한 영상의 P6 이진 형식은 적색, 녹색, 청색 순서로 각 픽셀의 각 색상 성분을 1바이트(픽셀당 3바이트)로 나타낸다.파일은 작지만 색 정보는 사람이 읽기 어렵다.헤더는 ASCII로 남아 있고 인수는 여전히 공백으로 구분되어 있다.이진 이미지 정보는 머리글 다음에 온다(공백으로 끝난다).

PPM 형식은 압축되지 않으므로 압축 형식보다 더 많은 공간과 대역폭이 필요하다.예를 들어 위의 192×128 PNG(Portable Network Graphics) 이미지는 166바이트의 파일 크기를 가지고 있다.192×128 PPM 이미지로 변환했을 때, 파일 크기는 73,848바이트가 된다.PPM 형식은 일반적으로 보다 효율적인 형식(예: PNG 형식)으로 변환하기 전에 중간 단계의 정보 손실 없이 영상 작업에 사용되는 중간 형식이다.

적녹청색 채널에 대한 최대값 또는 0만을 사용하여 위에 표시된 영상을 다음과 같이 인코딩할 수도 있다.

P3 # 폭 3과 높이 2, 색상당 0 또는 1을 사용하는 # 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0을 사용하는 # 동일한 이미지

선 끝과 주석 라인을 포함한 화이트 스페이스는 PNM 헤더 내의 단일 스페이스와 유사하다.일반 형식 P1의 경우...P3 이것은 픽스맵 라인에도 영향을 미친다. 사실상 라인은 70자로 제한되어야 한다.

P3 3 2 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0

16비트 확장자

PGM과 PPM 이진 형식(P5 및 P6 형식)의 원래 정의에서는 8비트보다 큰 비트 깊이를 허용하지 않았다.ASCII 형식은 비트 깊이를 더 많이 수용할 수 있지만, 파일 크기를 증가시켜 읽기 및 쓰기 작업의 속도를 늦춘다.이에 따라 많은 프로그래머들이 비트 깊이를 높이도록 포맷을 확장했다.더 높은 비트 깊이를 사용하면 파일의 내성을 결정해야 하는 문제가 발생한다.다양한 구현은 어떤 바이트 순서를 사용할 것인지에 대해 합의할 수 없었고, 일부는 16비트 엔디안성을 픽셀 패킹 순서에 연결했다.[9]PNM 형식의 사실상의 표준 구현인 Netpbm에서 가장 중요한 바이트는 첫 번째다.[10]

32비트 확장자

PFM(Portable Floatmap)은 비공식적인 4바이트 IEEE 754 단일 정밀 부동 소수점 확장이다.[11][12][13]색상 파일은 헤더의 첫 번째 줄에 있는 ASCII 텍스트 "PF"로 식별되고, 회색 척도는 "PF"로 식별된다.다음 ASCII 텍스트 라인은 너비와 높이를 포함하며, 공백 문자 16진수 20으로 구분되고 때로는 16진수 0A(4줄로 결과 표시)로 구분된다.각 줄 뒤에는 Windows/DOS CR/LF 조합이 아닌 공백 문자 16진수 0A가 기록된다.세 번째 ASCII 텍스트 라인은 0이 아닌 소수점을 가지며, 음수 및 빅 엔디안이 양수일 때 픽셀 데이터에 대한 엔디안이 거의 없음을 나타낸다.숫자의 절대값은 범위를 나타낸다.따라서 -1.0을 포함하는 세 번째 줄은 0부터 1까지의 범위에서 리틀 엔디안 형식을 나타낸다.댓글이 없어.헤더 이후 파일은 왼쪽에서 오른쪽, 아래쪽에서 위쪽 순서로 지정된 각 픽셀에 대한 부동 소수점 번호로 진행한다.일부 프로그램에서는 RGBA 형식의 추가 확장으로 PF4를 제안한다.[14]

Photoshop,[15] KIMP, ImageMagick 등의 프로그램이 지원한다.

프로그램

Netpbm은 패키지에 220개 이상의 개별 프로그램을 포함하고 있으며, 대부분 이름에 "pbm", "pgm", "ppm", "pam" 또는 "pnm"이 포함되어 있다.예를 들면,pamscale이미지를 10% 축소하다pamcomp한 이미지를 다른 이미지 위에 덧씌우는 것,pbmtext텍스트 이미지를 만들거나 이미지에서 색상 수를 줄이려면pnmquant.

이 프로그램들은 다른 것들을 하기 위해 다양한 조합으로 사용될 수 있는 최소한의 구성 요소들로 설계되었다.예를 들어 Netpbm 패키지는 두 개의 연속 변환 프로그램을 사용하여 PBM 형식의 사진을 .bmp 파일로 변환할 수 있다.

pgmtoppm "#FFFFF" somepic.pbm > somepic.ppmp somepic.ppmp somepic.ppmp > somepic.bmp

이는 실행 시간을 절약하고 임시 somepic.ppm 파일을 남기지 않기 위해 파이프라인으로 더 일반적으로 수행된다.

pgmtoppm "#FFFFFF" somepic.pbm pppmp > somepic.bmp

Netpbm 프로그램은 모호한 형식 간에 변환하기 위한 매개체로 자주 사용된다.예를 들어, X11 윈도우 덤프(XWD 형식)를 매킨토시 PICT 파일로 직접 변환할 수 있는 툴이 없을 수도 있지만, 실행하면 이렇게 할 수 있다.xwdtopnm, 그러면.ppmtopict. (PNM 출력을 PBM, PGM 또는 PPM으로 출력한다고 하는 도구.PNM을 가져오는 도구는 세 가지 형식 중 하나를 읽는다.)좀 더 복잡한 예로서 Netpbm 도구는 48×48 XBMIkon으로 변환할 수 있고 결국 X-Face로 변환할 수 있다.[16]

역사

PBM(흑백) 형식은 1980년대 중반 제프 포스칸저에 의해 발명되었다.당시에는 전자 메일에 이진 파일을 보낼 수 있는 표준적이고 신뢰할 수 있는 방법이 없었고, 전자 메일에 7비트 ASCII 이외의 것을 보내려고 시도하면 데이터 손상이 발생하는 경우가 많았다.PBM은 이미지를 손상되지 않고 이메일로 전송할 수 있도록 설계됐다.포스칸저는 1988년 Pbmplus라고 불리는 Netpbm의 포러너를 출시했다.1988년 말까지 포스칸저는 PGM(그린스케일)과 PPM(컬러) 형식을 개발해 Pbmplus와 함께 출시했다.

Pbmplus의 마지막 발매는 1991년 12월 10일이었다.포스칸저는 더 이상의 업데이트 내용을 발표하지 않았으며, 1993년 이를 대체하기 위해 Netpbm이 개발되었다.처음에는 Pbmplus의 이름을 바꾼 발매에 지나지 않았지만, 패키지가 다시 폐기된 1995년까지 업데이트는 계속되었다.1999년에 Netpbm 패키지는 현재 유지 관리자인 Bryan Henderson에 의해 픽업되었다.

2000년에, 알파 채널을 허용하는 Netpbm 라이브러리의 파일 형식에 PAM이 추가되었다.[17]

Netpbm이라는 이름은 당시에 주목할 만한 인터넷 에서 협력한 프로그램 개발자들로부터 유래되었다. NetBSD 운영 체제와 NetHack 게임도 비슷한 이름을 얻었다. (이후보다 더 널리 보급된 PNG(Portable Network Graphics) 형식과 달리, 그 이름의 "넷"은 실제로 최적화되고 있는 이미지 자체에 관한 것이 아니다.d 네트워크를 통한 전송의 경우).

PAM 그래픽 형식

휴대용 임의 지도
파일 이름 확장명
.pam
인터넷 미디어 유형
이미지/x-휴대용[18] 데이터
개발자브라이언 헨더슨
형식 유형이미지 파일 형식
연장 위치PNM(Portable aNy Map)
오픈 포맷?

PAM(Portable Arbitrary Map)은 이전 2진수 P4의 확장이다...P6 그래픽 형식.PAM은 PBM, PGM, PPM의 모든 기능을 일반화하고 확장 기능을 제공한다.PAM은 깊이튜플 유형의 두 가지 새로운 속성을 정의한다.

  1. 깊이 속성은 그레이스케일 영상의 경우 1개, RGB 영상의 경우 3개 등 영상의 채널 수를 정의한다.
  2. 튜플 유형 속성은 PAM 파일이 나타내는 이미지의 종류를 지정하므로, 이전 Netpbm 형식을 사용할 수 있을 뿐 아니라 투명성과 같은 새로운 용도로 확장될 수 있다.

PAM은 XnViewFFmpeg에서 지원된다.[19][20]지정한 대로TUPLTYPEFFmpeg는 선택 사항이지만, FFmpeg는 이를 요구한다.

이전 형식과의 차이점

PAM 파일 형식의 헤더는 P7로 시작하고 (다른 형식과는 달리) 명시적 닫힘으로 끝나며, PAM 헤더로 끝나는 ENDHDR. Line ends는 유의하며, PNM의 경우 줄 끝은 공백이다.

PAM의 일반 버전(인간 판독 가능, ASCII 기반)은 없다.PAM 파일은 항상 이진 파일이며 스위치 사용 시도-plainPAM 출력을 생성하는 Netpbm 프로그램에서 오류 메시지가 표시됨.

PBM에 해당하는 흑백 버전의 PAM(깊이 1, tuple type BLACKANDWIND)의 경우 PBM이 픽셀당 1비트(픽셀 8개를 1바이트에 포장)를 사용하는 대신 PAM이 픽셀당 1바이트를 사용한다.또한 이러한 PAM 이미지에서 값 1은 PBM("링크 켜기")의 검은색과 반대로 흰색("라이트 켜기")을 의미한다.

PAM 튜플 유형
TUPLTYPE 최대값 깊이 댓글
검은색과 흰색. 1 1 그레이스케일의 특별한 경우
그레이스케일 2...65535 1 MAXVAL > 255의 경우 픽셀당 2바이트
RGB 1...65535 3 MAXVAL > 255의 경우 픽셀당 6바이트
블랙앤드화이트_알파 1 2 픽셀당 2바이트
그레이스케일_알파 2...65535 2 MAXVAL > 255의 경우 픽셀당 4바이트
RGB_ALPA 1...65535 4 MAXVAL > 255의 경우 픽셀당 8바이트

투명성

모든 기본 튜플 유형(BLACKANDWINE, GREYSCOLE, RGB)에는 불투명도 채널이 있는 변종이 있다.튜플 유형은 기본 튜플 유형에 "_ALPA"를 접미사로 추가하여 생성된다.

예를 들어, GREESCLE의 튜플 유형이 있는 이미지는 PGM(휴대용 그레이맵)과 동일하다.투명성을 가진 그레이스케일_ALFA는 PGM에서 직접 가능하지 않다.이 규격은 그레이스케일에 MAXVAL 1을 허용하지만, 블랙앤드화이트와 동일한 효과를 갖는다.

BMP 기사의 는 4×2=8 파란색, 녹색, 빨간색 및 흰색 픽셀의 RGBA 이미지, 첫 번째 아래쪽 행의 절반 투명(0x7F), 두 번째 위쪽 행의 불투명(0xFF), 16진수를 보여준다.FF00007F 00FF007F 0000FF7F FFFFFF7F FF0000FF 00FF00FF 0000FFFF FFFFFFFFBGRA 순서로PAM의 경우, 이 비트맵은 각 픽셀의 첫 번째 바이트와 세 번째 바이트를 교환하는 RGBA 순서로 제공되어야 한다.BMP 행은 일반적으로 상향 정렬되며, PAM 및 PNM 행은 하향식으로 지정된다(예: 이 예시).0000FFFF 00FF00FF FF0000FF FFFFFFFF 0000FF7F 00FF007F FF00007F FFFFFF7F이 예제의 PAM 헤더는 다음과 같을 수 있다.

Bmp format2.svg0,0: blue 0000FF FF0,1: green 00FF00 FF0,2: red FF0000 FF0,3: white FFFFFF FF1,0: blue 0000FF 7F, half transparent1,1: green 00FF00 7F, half transparent1,2: red FF0000 7F, half transparent1,3: white FFFFFF 7F, half transparent
About this image
P7 폭 4 높이 2 깊이 4 최대값 255 TUPLTYPE RGB_ALPA EndHDR

확장

PAM의 튜플형 메커니즘은 많은 확장을 허용한다.이론적으로 PAM은 CMYK와 같은 색상 모델을 나타내도록 확장될 수 있다.

형식은 그래픽에만 국한되지 않고, 그 정의로 인해 서명되지 않은 정수의 임의 3차원 매트릭스에 사용할 수 있다.예를 들어 팸섬콜과 같은 Netpbm 패키지의 일부 프로그램은 조잡한 매트릭스 산술 프로세서로 기능하며 이러한 방식으로 PAM 형식을 사용한다.

참고 항목

참조

  1. ^ a b "Netpbm history". Retrieved March 17, 2010.
  2. ^ Henderson, Bryan. "Getting Netpbm". Sourceforge. Retrieved 2 February 2021.
  3. ^ .pbm MIME 유형이 IANA등록되지 않음
  4. ^ .pgm MIME 유형이 IANA등록되지 않음
  5. ^ .ppm MIME 유형이 IANA등록되지 않음
  6. ^ a b .pnm MIME 유형이 IANA등록되지 않음
  7. ^ a b Murray, James D.; van Ryper, William (April 1996). Encyclopedia of Graphics File Formats, Second Edition. O'Reilly. ISBN 1-56592-161-5. Retrieved 2014-02-27.
  8. ^ "Layout of the PAM file format".
  9. ^ "Pnmtotiff User Manual". netpbm doc at SourceForge. 27 March 2005.
  10. ^ "pamendian man page". netpbm doc at SourceForge. 10 October 2012.
  11. ^ "PFM Format Description".
  12. ^ "PFM (Portable Float Map) - Just Solve the File Format Problem".
  13. ^ "PFM Format Documentation". Archived from the original on 2019-12-31.
  14. ^ "Synthetic HDR Fire Sequences".
  15. ^ "File formats in Adobe Photoshop".
  16. ^ Jeff Dairiki. "Online X-Face Converter". Retrieved 2014-03-02.
  17. ^ "PAM format specification".
  18. ^ IANA에 등록되지 않은 MIME 유형: PAM 형식 지정
  19. ^ Pierre-Emmanuel Gougelet (2015-02-19). "XnView 2.30". XnView. Retrieved 2015-02-20. PAM format added
  20. ^ "Image Formats". FFmpeg General Documentation. 2014. Retrieved 2014-02-23.

외부 링크