X 픽스맵

X PixMap
X 픽스맵
Screenshot-xterm-linux.xpm-GVIM.png
gvim과 같은 일부 텍스트 편집기는 xpm 이미지를 그래픽 형식으로 표시할 수 있다.
파일 이름 확장명
.xpm
인터넷 미디어 유형
image/x-ixmap[1]
개발자BULL 리서치
형식 유형이미지 파일 형식
연장 위치XBM
오픈 포맷?

X픽스맵(XPM)은 X 윈도 시스템이 사용하는 이미지 파일 포맷으로 1989년 프랑스 소피아 안티폴리스의 불 연구 센터에서 일하는 다니엘 다다이얼과 콜라스 나하부가 만들고 이후 아르노 르 호르스가 강화했다.[2][3]

주로 아이콘 픽스맵을 만들기 위한 것으로 투명한 픽셀을 지원한다.이전의 XBM 구문에서 파생된 것으로, XPM2 형식의 일반 텍스트 파일이나 C 프로그래밍 언어 구문의 파일로, C 프로그램 파일에 포함될 수 있다.[2]

역사

XPM1

첫 번째 (1989) XPM 형식은 XBM 형식과 비교적 유사하다.[a]XBM에 비해 인덱싱된 색상에 추가적인 매크로 정의와 변수를 사용하고, 이미지를 설명하기 위해 비트를 문자로 대체한다.다음은 1989년 XPM 형식의 흑백 이미지.

#XFACE_format 1 정의 #XFACE_width 48 정의 #정의 XFACE_높이 48 #정의 XFACE_ncolors 2 #XFACE_chars_per_pixel 1 정의 정태의 마를 뜨다 *XFACE_컬러[] = { "a", "#fffffff", "b", "#000000" }; 정태의 마를 뜨다 *XFACE_픽셀[] = { "아바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바, // 48픽셀의 48 행에 대해 등 

XPM2

XPM2(1990)는 모든 C 코드를 제거하여 포맷을 단순화한다.[b][c]구조는 로 단순화된다.

! XPM2 <값> <색깔> <픽셀> <선택적 확장>
  • 값 섹션에서는 다음과 유사한 이미지의 전체 치수를 설명한다.#define진술들
  • 색상 섹션은 색상의 "유형"의 새로운 개념과 값을 정의한다.유형은 "색상"의 경우 c, "모노크롬" 출력의 경우 m, "회색"의 경우 g, 정의된 색상이 무엇을 해야 하는지를 설명하는 "심볼릭"의 경우 s일 수 있다.
  • 픽셀과 옵션 확장자는 원래 형식으로 유지된다.

화소당 너비 48, 높이 4, 컬러 2개, 문자 1개로 구성된 위의 파일은 다음과 같이 된다.

! XPM2 48 4 2 1 a c #FFFFFF b c #000000 abaabaababaaabaabababaabaabaababaabaaababaabaaab abaabaababaaabaabababaabaabaababaabaaababaabaaab abaabaababaaabaabababaabaabaababaabaaababaabaaab abaabaababaaabaabababaabaabaababaabaaababaabaaab

컬러스

색상은 육각형 외에 X11 색상 이름 중 하나일 수 있다.게다가.None투명성을 나타낸다.[4][5]

"심볼릭" 기능은 색상이 사용되는 컨텍스트에 따라 색상을 조정할 수 있도록 한다.다음과 같은 코드s border c blue파란 배경에서 조정될 수 있다.

다색 인코딩

한 도구는 16가지 색상에 a~p만을 사용하는 것으로 알려져 있으며, 64색에 대해 aa~dp까지로 전환하지만 64색에 대한 단일 문자 인코딩을 여전히 읽고 있다; Base64를 비교한다.

더 많은 색상으로 코드는 더 많은 문자를 사용한다. 예를 들어 16 × 16 = 256 색의 경우 최대 pp.문자열 ab은 실제로 인접한 두 픽셀 dabc의 중간일 수 있기 때문에 텍스트 편집기에는 덜 유용하다.공간은 컬러 코드로 허용되지만, 사용된 텍스트 편집기에 따라 좋지 않은 생각이 들 수도 있다.제어 코드, 백슬래시 및 따옴표(XPM1 및 XPM3에서 필요)가 없는 경우 128 - 33 - 2 = 93 ASCII 문자를 단일 문자 색상 코드에 사용할 수 있다.

단순화된 예: 미국-ASCII 문자 90개를 10자로 겹쳐지지 않는 9개의 집합으로 배열할 수 있다.따라서 최대 109 = 1000000000 컬러의 XPM 팔레트 색인에 의해 9자의 모호하지 않은 문자열로 각 픽셀의 색상을 설정할 수 있다(단 256개만 지원하는 GIF와 비교).

XPM2의 경우 이미지에 속하는 라인이 몇 개인지, 즉 두 번째 헤더 라인에서 색상 코드(위의 예에서 2개 라인)와 행(위의 예에서 4개 높이)의 수를 알리는 행(예: 2 + 2 + 4 = 8 라인).

XPM3

현재와 마지막 형식은 XPM3(1991)이다.C 래퍼를 재도입하지만 파일 구조를 명시적으로 보여주는 대신 저장된 문자열은 XPM2와 본질적으로 동일하다.

/* XPM */ 정태의 마를 뜨다 * 엑스페이스[] = { "48 4 2 1", "c #FFFFFF", "b c #000000", "아바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바, "아바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바, "아바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바, "아바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바바 }; 

만약 "값" 라인에 4개의 숫자가 아닌 6개가 포함되어 있다면, 추가 값은 "핫스팟"의 좌표를 나타내며, 여기서 0 0은 아이콘과 기본값을 포함하는 상자의 왼쪽 상단 모서리가 된다."핫스팟"은 마우스 포인터와 유사한 애플리케이션에 사용된다.

다른 형식과의 비교

프로그램 창에서 열린 블레이그 파일

다음 코드는 XBM, XPM 및 PBM 형식으로 동일한 블레이그 파일을 표시한다.

XBM 버전:

#test_width 16 #nowledge test_nowledge 7 정태의 마를 뜨다 test_bits[] = { 0x13, 0x00, 0x15, 0x00, 0x93, 0xcd, 0x55, 0xa5, 0x93, 0xc5, 0x00, 0x80, 0x00, 0x60 }; 
XnView에서 렌더링한 Blarg.xpm(XPM2)

XPM2 버전:

! XPM2 16 7 2 1 * c #00000000 . c #FFFF **..*............... *.*.**...........................**.**..** *.*.*.*.*.*..*.* **..*..**.*...** ...............* .............**.

XPM3 버전:

/* XPM */ 정태의 마를 뜨다 * blarg_xpm[] = { "16 7 2 1", "* c #000000", ". c #FFFF", "**..*...........", "*.*.*...........", "**..*..**.**..**", "*.*.*.*.*.*..*.*", "**..*..**.*...**", "...............*", ".............**." }; 

PBM 파일:

P1 16 7 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 1 1 0 0 1 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0

애플리케이션 지원

ACDee, Amaya, CorelDROW, KIMP, ImageMagick, IrfanView(포맷 플러그인),[6][7] PMView, Photoshop(플러그인), XnView 등이 XPM을 지원한다.그라바타 그리고 또한 XPM을 지지한다.[8][9]

2005년에 X11 libXpm 취약성이 수정되었다.[10]FFmpeg 버전 3.3 이상에서는 XPM을 디코딩할 수 있다.[11]

메모들

  1. ^ 설명서(인터넷에서 찾을 수 없음) 대신 이 형식에 대한 설명을 보려면 xpm-contrib(이전의 libXpm 적절한 부분) 변환기(xpm2ppm, xpm1to3, xpm1to2c) 소스 코드를 사용하십시오.
  2. ^ 문자열 배열에 프로그래밍 언어 구문을 사용하는 것도 허용되지만 C 구문만 증명된다."XPM2 C" 구문은 결국 XPM 버전 3에서 유일한 형식이 되었다.
  3. ^ 이 구문에 대한 참조는 https://github.com/freedesktop/libXpm/blob/master/NEWS.old 및 libXpm 3.4 매뉴얼의 "history" 섹션을 참조하십시오.

참조

  1. ^ .xpm MIME 유형이 IANA등록되지 않음
  2. ^ a b Le Hors, Arnaud (1996-02-01). XPM Manual: The X PixMap Format (PDF). Groupe Bull. pp. 7–8. Retrieved 2014-01-01.
  3. ^ Daniel Dardailler (1996-07-15). "The XPM Story". Colas Nahaboo and Arnaud Le Hors. Archived from the original on 1997-06-07. Retrieved 2014-01-01.
  4. ^ "The XPM FAQ". X.Org Foundation. 1996. Retrieved 2016-03-12.
  5. ^ "XPM File Format Summary". Encyclopedia of Graphics File Formats, 2nd Edition. ISBN 1-56592-161-5. Retrieved 2014-01-01.
  6. ^ Nir Sofer. ".xpm Extension". Retrieved 2014-01-12.
  7. ^ "File Type: X Windows Pixmap". Windows File Association. Microsoft. 2013. Retrieved 2014-01-12.
  8. ^ 그라바타 비공식, XPM2 없음
  9. ^ Steve Kinzler (2005). "Picons Archive". Retrieved 2014-01-06. picons are in either monochrome XBM format or color XPM and GIF formats
  10. ^ "libXpm library contains multiple integer overflow vulnerabilities". US-CERT. 2005-10-06. VU#537878. Retrieved 2014-01-01.
  11. ^ "FFmpeg 3.3 "Hilbert"". FFmpeg. 2017-04-13. Retrieved 2017-10-28. XPM decoder

참고 항목