อ่าน 5 นาที
X PixMap
X PixMap ( XPM ) เป็น รูปแบบไฟล์ภาพ ที่ใช้โดย X Window System สร้างขึ้นในปี 1989 โดย Daniel Dardailler และ Colas Nahaboo ที่ทำงานอยู่ที่ Bull Research Center ใน Sophia Antipolis...
X PixMap
| X PixMap | |
|---|---|
โปรแกรมแก้ไขข้อความบางโปรแกรมเช่นgvimสามารถแสดงภาพ xpm ในรูปแบบกราฟิกได้ | |
| นามสกุลไฟล์ | .xpm |
| สื่อประเภทอินเทอร์เน็ต | image/x-xpixmap [ 1 ] |
| พัฒนาโดย | การวิจัย BULL |
| ประเภทของรูปแบบ | รูปแบบไฟล์ภาพ |
| ขยายจาก | เอ็กซ์บีเอ็ม |
| รูปแบบเปิด ? | ใช่ |
X PixMap ( XPM ) เป็นรูปแบบไฟล์ภาพที่ใช้โดยX Window Systemสร้างขึ้นในปี 1989 โดย Daniel Dardailler และ Colas Nahaboo ที่ทำงานอยู่ที่Bull Research CenterในSophia Antipolisประเทศฝรั่งเศส และได้รับการปรับปรุงเพิ่มเติมในภายหลังโดย Arnaud Le Hors [ 2 ] [ 3 ]
โดยมีวัตถุประสงค์หลักเพื่อสร้างภาพพิกเซลไอคอน และรองรับพิกเซลโปร่งใสพัฒนามาจาก ไวยากรณ์ XBM รุ่นก่อนหน้า เป็น ไฟล์ ข้อความธรรมดาในรูปแบบ XPM2 หรือ ไวยากรณ์ ภาษาการเขียนโปรแกรม Cซึ่งสามารถรวมไว้ในไฟล์โปรแกรม C ได้[ 2 ]
ประวัติศาสตร์
เอ็กซ์พีเอ็ม1
รูปแบบ XPM แรก (ปี 1989) ค่อนข้างคล้ายกับรูปแบบ XBM [ a ]เมื่อเปรียบเทียบกับ XBM แล้ว XPM ใช้คำจำกัดความมาโครและตัวแปรเพิ่มเติมสำหรับสีที่มีดัชนี และแทนที่บิตด้วยอักขระเพื่ออธิบายภาพ ต่อไปนี้เป็นภาพขาวดำในรูปแบบ XPM ปี 1989
#define XFACE_format 1 #define XFACE_width 48 #define XFACE_height 48 #define XFACE_ncolors 2 #define XFACE_chars_per_pixel 1 อักขระคงที่* XFACE_colors [] = { "a" , "#ffffff" , "b" , "#000000" }; ถ่านคงที่* XFACE_pixels [] = { "abaabaababaaabaabaabaabaabaabaabaaababaabaaab" , // และอื่น ๆ สำหรับ 48 แถวที่มี 48 พิกเซลเอ็กซ์พีเอ็ม2
XPM2 (1990) ลดความซับซ้อนของรูปแบบโดยการลบโค้ดC ทั้งหมดออก [ b ] [ c ]โครงสร้างถูกทำให้ง่ายขึ้นเป็น
! XPM2 <ค่าต่างๆ> <สี> <พิกเซล> <ส่วนขยายเพิ่มเติม (ไม่บังคับ)>
- ส่วนค่าจะอธิบายมิติโดยรวมของภาพคล้ายกับ
#defineส่วนข้อความ - ส่วนสีจะกำหนดค่าต่างๆ และแนวคิดใหม่เกี่ยวกับ "ประเภท" ของสี ประเภทอาจเป็นcสำหรับ "สี" mสำหรับ "ขาวดำ" gสำหรับ "โทนสีเทา" และsสำหรับ "สัญลักษณ์" ซึ่งอธิบายว่าสีที่กำหนดไว้นั้นควรทำอะไร
- จำนวนพิกเซลและส่วนขยายเพิ่มเติมยังคงเหมือนเดิมในรูปแบบดั้งเดิม
ไฟล์ข้างต้นที่มีความกว้าง 48 พิกเซล ความสูง 4 พิกเซล ใช้ 2 สี และมีอักขระ 1 ตัวต่อพิกเซล จะกลายเป็น:
! XPM2 48 4 2 1 ac #FFFFFF bc #000000 อบาบาบาบาอาบาบาบาบาบาบาบาบาบาอาบาบาบาอาอาบ อบาบาบาบาอาบาบาบาบาบาบาบาบาบาอาบาบาบาอาอาบ อบาบาบาบาอาบาบาบาบาบาบาบาบาบาอาบาบาบาอาอาบ อบาบาบาบาอาบาบาบาบาบาบาบาบาบาอาบาบาบาอาอาบ
สี
นอกจากรหัสเลขฐานสิบหกแล้ว สียังสามารถเป็นชื่อสี X11 ใดก็ได้ นอกจากนี้Noneยังระบุถึงความโปร่งใสด้วย[ 4 ] [ 5 ]
คุณสมบัติ "เชิงสัญลักษณ์" ช่วยให้สามารถปรับสีได้ตามบริบทที่นำไปใช้ ตัวอย่างเช่น โค้ดs border c blueสามารถปรับเปลี่ยนได้บนพื้นหลังสีน้ำเงิน
การเข้ารหัสหลายสี
มีเครื่องมือหนึ่งที่ใช้เพียงตัวอักษรaถึงpสำหรับ 16 สี และเปลี่ยนไปใช้aaถึงdpสำหรับ 64 สี แต่ยังคงอ่านการเข้ารหัสตัวอักษรเดี่ยวสำหรับ 64 สีอยู่ ลองเปรียบเทียบกับ Base64
ยิ่งมีสีมากเท่าไหร่ รหัสสีก็ยิ่งใช้ตัวอักษรมากขึ้นเท่านั้น เช่นaaถึงppสำหรับ 16 × 16 = 256 สี ซึ่งไม่ค่อยมีประโยชน์สำหรับโปรแกรมแก้ไขข้อความ เพราะสตริงabอาจหมายถึงกึ่งกลางของพิกเซลที่อยู่ติดกันสองพิกเซล เช่นdabcสามารถใช้ช่องว่างเป็นรหัสสีได้ แต่ก็อาจไม่ใช่ความคิดที่ดีนัก ขึ้นอยู่กับโปรแกรมแก้ไขข้อความที่ใช้ หากไม่รวมรหัสควบคุม เครื่องหมายแบ็กสแลช และเครื่องหมายอัญประกาศ (ซึ่งจำเป็นใน XPM1 และ XPM3) จะมีตัวอักษร ASCII จำนวน 128 − 33 − 2 = 93 ตัว สำหรับรหัสสีแบบตัวอักษรเดี่ยว
ตัวอย่างแบบง่าย: อักขระ US-ASCII 90 ตัว สามารถจัดเรียงเป็น 9 ชุดที่ไม่ซ้ำกัน ชุดละ 10 ตัว ดังนั้น สตริงที่ไม่กำกวมซึ่งประกอบด้วยอักขระ 9 ตัว สามารถกำหนดสีของแต่ละพิกเซลโดยใช้ดัชนีจานสี XPM ได้มากถึง 10 9 =1,000,000,000 สี (เทียบกับGIFซึ่งรองรับเพียง 256 สี)
สำหรับ XPM2 นั้น จะเห็นได้ชัดเจนว่าภาพประกอบด้วยกี่บรรทัด โดยมีสองบรรทัดเป็นส่วนหัว และบรรทัดที่สองจะระบุจำนวนรหัสสี (2 บรรทัดในตัวอย่างข้างต้น) และจำนวนแถว (ความสูง 4 ในตัวอย่างข้างต้น) เช่น 2 + 2 + 4 = 8 บรรทัด
เอ็กซ์พีเอ็ม3
รูปแบบปัจจุบันและรูปแบบสุดท้ายคือ XPM3 (ปี 1991) มันนำตัวห่อหุ้ม C กลับมาใช้อีกครั้ง แต่แทนที่จะแสดงโครงสร้างของไฟล์อย่างชัดเจน สตริงที่จัดเก็บนั้นโดยพื้นฐานแล้วเหมือนกับ XPM2
/* XPM */ ถ่านคงที่* XFACE [] = { "48 4 2 1" , "ac #ffffff" , "bc #000000" , "abaabaababaaabaabaabaabaabaabaabaaababaabaaab" , "abaabaabaaabaababaabaabaabaabaabaaabaabaabaaab" , "อาบาบาอาบาบาอาบาอาบาบาอาบาอาบาบาบาอาบาบาบาอาอาบ" , "อาบาบาบาบาอาบาบาบาบาบาบาบาบาบาอาบาบาบาอาอาบ" };หากบรรทัด "ค่า" มีตัวเลขหกตัวแทนที่จะเป็นสี่ตัว ค่าเพิ่มเติมเหล่านั้นจะระบุพิกัดของ "ฮอตสปอต" โดยที่0 0คือมุมบนซ้ายของกรอบที่บรรจุไอคอนและเป็นค่าเริ่มต้น "ฮอตสปอต" ใช้สำหรับตัวชี้เมาส์และแอปพลิเคชันที่คล้ายกัน
การเปรียบเทียบกับรูปแบบอื่นๆ

โค้ดต่อไปนี้แสดงไฟล์ blarg เดียวกันในรูปแบบ XBM , XPM และPBM
เวอร์ชัน XBM:
#define test_width 16 #define test_height 7 static char test_bits [] = { 0x13 , 0x00 , 0x15 , 0x00 , 0x93 , 0xcd , 0x55 , 0xa5 , 0x93 , 0xc5 , 0x00 , 0x80 , 0x00 , 0x60 };
เวอร์ชัน XPM2:
! XPM2 16 7 2 1 * c #000000 . c #ffffff **..*........... *.*.*........... **..*..**.**..** *.*.*.*.*.*.*.* **..*..**.*...** ...............* .............**.
เวอร์ชัน XPM3:
/* XPM */ static char * blarg_xpm [] = { "16 7 2 1" , "* c #000000" , ". c #ffffff" , "**..*..........." , "*.*.*..........." , "**..*..**.**..**" , "*.*.*.*.*.*.*.*.*" , "**..*..**.*...**" , "...............*" , ".............**." };ไฟล์ PBM:
พี1 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
การสนับสนุนแอปพลิเคชัน
ACDSee , Amaya , CorelDRAW , GIMP , ImageMagick , IrfanView (ปลั๊กอินรูปแบบ), PaintShop Pro , PMView , Photoshop (ปลั๊กอิน) และXnViewรวมถึงโปรแกรมอื่นๆ รองรับ XPM [ 6 ] [ 7 ] Gravatarก็รองรับ XPM เช่นกัน[ 8 ] [ 9 ]
ช่องโหว่X11 libXpm ได้รับการแก้ไขในปี 2548 [ 10 ]และอีกสามรายการในปี 2566 [ 11 ]
FFmpegเวอร์ชัน 3.3 หรือใหม่กว่าสามารถถอดรหัส XPM ได้[ 12 ]
ดูเพิ่มเติม
- Netpbm – ชุดเครื่องมือสำหรับการปรับแต่งภาพ
- CLUT – ในกราฟิกคอมพิวเตอร์ หมายถึงชุดสีที่มีให้เลือกใช้จำนวนจำกัด
- X BitMap – รูปแบบไฟล์
หมายเหตุ
- ^สำหรับคำอธิบายรูปแบบนี้แทนคู่มือ (ซึ่งหาไม่ได้ในอินเทอร์เน็ต) ให้ใช้ซอร์สโค้ดของตัวแปลง xpm-contrib (เดิมเป็นส่วนหนึ่งของ libXpm) (xpm2ppm, xpm1to3, xpm1to2c)
- ^การใช้ไวยากรณ์ภาษาโปรแกรมสำหรับอาร์เรย์สตริงก็เป็นที่ยอมรับเช่นกัน แต่มีเพียงไวยากรณ์ภาษา C เท่านั้นที่ได้รับการรับรอง ไวยากรณ์ "XPM2 C" ในที่สุดก็กลายเป็นรูปแบบเดียวใน XPM เวอร์ชัน 3
- ^สำหรับข้อมูลอ้างอิงเกี่ยวกับไวยากรณ์นี้ โปรดดูที่ https://gitlab.freedesktop.org/xorg/lib/libxpm/-/blob/master/NEWS.oldและส่วน "ประวัติ" ในคู่มือ libXpm 3.4
ดูเพิ่มเติม
- ระบบหน้าต่าง X (X11) และชื่อสีของ X11
- PBM (ขาวดำ), PGM (โทนสีเทา), PPM (สี), PNM (ใดๆ)
- เอ็กซ์ บิตแมป
ลิงก์ภายนอก
- libXpm - ไลบรารีรูปแบบไฟล์ภาพ X Pixmap (XPM)
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ X PixMap
X PixMap ( XPM ) เป็น รูปแบบไฟล์ภาพ ที่ใช้โดย X Window System สร้างขึ้นในปี 1989 โดย Daniel Dardailler และ Colas Nahaboo ที่ทำงานอยู่ที่ Bull Research Center ใน Sophia Antipolis...
เอ็กซ์พีเอ็ม1
รูปแบบ XPM แรก (ปี 1989) ค่อนข้างคล้ายกับรูปแบบ XBM [ a ] เมื่อเปรียบเทียบกับ XBM แล้ว XPM ใช้คำจำกัดความมาโครและตัวแปรเพิ่มเติมสำหรับสีที่มีดัชนี และแทนที่บิตด้วยอักขระเพื่ออธิบายภาพ ต่อไปนี้เป็นภาพขาวดำในรูปแบบ XPM ปี 1989
เอ็กซ์พีเอ็ม2
XPM2 (1990) ลดความซับซ้อนของรูปแบบโดยการลบโค้ด C ทั้งหมดออก [ b ] [ c ] โครงสร้างถูกทำให้ง่ายขึ้นเป็น
เอ็กซ์พีเอ็ม3
รูปแบบปัจจุบันและรูปแบบสุดท้ายคือ XPM3 (ปี 1991) มันนำตัวห่อหุ้ม C กลับมาใช้อีกครั้ง แต่แทนที่จะแสดงโครงสร้างของไฟล์อย่างชัดเจน สตริงที่จัดเก็บนั้นโดยพื้นฐานแล้วเหมือนกับ XPM2