พิกเซลแมปแบบพกพา (.ppm)
Netpbm มาตรฐานPortable Pixmap Format (PPM) คือมาตรฐานสี RGB แบบเต็มรูปแบบของตระกูลกราฟิก Netpbm ซึ่งมอบการแสดงผลภาพดิจิทัล Truecolor แบบไม่บีบอัดที่เรียบง่ายที่สุดเท่าที่จะเป็นไปได้
ตรวจสอบไฟล์และข้อมูลเมตา
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ PPM โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็นส่วนหัวระดับไบต์
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ PPM โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็น HEX (OFFSET 0):
50 33 / 50 36การแสดงผลรูปแบบ ASCII: P3 / P6
มาตรฐาน: Netpbm Library Standard
ข้อมูลจำเพาะทางเทคนิค
| สถาปัตยกรรมคอนเทนเนอร์ | รูปแบบ Netpbm แบบ ASCII (P3) หรือไบนารี (P6) ที่ระบุความกว้าง ความสูง ค่าสีสูงสุด และสตรีมชุดค่า RGB |
| การบีบอัด | ไบต์ไบนารีดิบแบบไม่บีบอัด หรือชุดตัวเลขข้อความ ASCII ที่อ่านได้ |
| การจัดลำดับไบต์ | ลำดับไบต์แบบ Big-Endian (สำหรับตัวอย่าง 48 บิต ช่องละ 16 บิตในโหมด P6) |
| พื้นที่สี | RGB เชิงเส้นหรือ sRGB มาตรฐาน |
| ช่องสัญญาณและโครงสร้าง | RGB 3 ช่องสัญญาณ (สีจริง 24 บิตหรือ 48 บิต) |
| ขนาดสูงสุด | แทบไม่จำกัด (รองรับพื้นที่พิกัด 64 บิตได้ตามต้องการ) |
| ความโปร่งใส | ไม่มี (PPM มาตรฐานเป็น RGB ทึบแสงเท่านั้น) |
| การสตรีมและแบบโปรเกรสซีฟ | เล่นสตรีมตามลำดับทีละแถว |
ตารางเปรียบเทียบทางเทคนิค: PPM กับคู่แข่ง
| คุณลักษณะทางเทคนิค | PPM (ปัจจุบัน) | BMP | PNG | TIFF |
|---|---|---|---|---|
| ความลึกของสี | Truecolor RGB 24-bit / 48-bit | RGBA 1-bit ถึง 32-bit | RGBA 24-bit / 48-bit | RGBA 8-bit ถึง 64-bit |
| รูปแบบพี่น้องใน Netpbm | PPM (Portable Pixmap) | รูปแบบที่ไม่ใช่ Netpbm | รูปแบบ W3C ที่ไม่ใช่ Netpbm | รูปแบบ Adobe ที่ไม่ใช่ Netpbm |
| ไบต์เวทมนตร์ (Magic Bytes) | P3 (ASCII) / P6 (ไบนารี) | BM (0x42 0x4D) | ‰PNG.... | II*\0 หรือ MM\0* |
| การบีบอัด | ไม่บีบอัด | ไม่บีบอัด / RLE | การบีบอัด Deflate แบบไม่สูญเสียข้อมูล ขนาดไฟล์ที่ประหยัดได้ขึ้นอยู่กับเนื้อหาภาพ | LZW / Deflate / Zip |
รูปแบบความเสียหายทั่วไปและคู่มือการกู้คืน Hex
ภาพแสดงผลโดยมีความเหลื่อมของแชนเนลสีในแนวทแยง
สาเหตุหลัก: ไบต์หนึ่งหายไปจากสตรีมชุดค่าสี RGB ทำให้ไบต์สีแดง สีเขียว และสีน้ำเงินที่ตามมาคลาดตำแหน่ง
การกู้คืน: จัดตำแหน่งออฟเซ็ตของชุดค่าสี RGB สามช่องใหม่ หรือแปลงด้วย File2File.app Netpbm Converter
การวิเคราะห์ความปลอดภัยและเวกเตอร์การโจมตีตัวแยกวิเคราะห์
ตัวถอดรหัส PPM ต้องระวังปัญหาจำนวนเต็มล้น (integer overflow) เมื่อคำนวณขนาดบัฟเฟอร์สำหรับชุดค่า RGB สามค่า ซึ่งใช้พื้นที่ 3 ไบต์
เวกเตอร์การโจมตีที่ทราบ
- จำนวนเต็มล้นระหว่างการจัดสรรบัฟเฟอร์ width * height * 3
- การอ่านข้อมูลเกินขอบเขตบัฟเฟอร์เมื่ออ่านโทเค็น ASCII ที่ผิดรูปแบบในโหมด P3
- การปฏิเสธการให้บริการ (Denial of Service) ผ่านการประกาศจัดสรรหน่วยความจำที่มากเกินไป
แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน: บังคับใช้ขีดจำกัดการจัดสรรหน่วยความจำอย่างเข้มงวดตามขนาดไฟล์จริงก่อนถอดรหัส
ประวัติความเป็นมาและเหตุการณ์สำคัญ
ข้อได้เปรียบและจุดเด่นสำคัญ
- ส่วนหัวและค่าพิกเซลของ PPM เขียนจากโปรแกรมกราฟิกได้ง่าย ใช้ไลบรารีเมื่อต้องแยกวิเคราะห์ทั้งแบบ ASCII และไบนารี หรือจัดการไฟล์ผิดรูปแบบอย่างปลอดภัย
- โหมด ASCII (P3) ช่วยให้นักพัฒนาสามารถดู คัดลอก และแก้ไขค่าสี RGB ดิบได้โดยตรงในโปรแกรมแก้ไขข้อความ
- PPM ใช้เป็นรูปแบบกลางหรือรูปแบบเอาต์พุตอย่างง่ายในหลักสูตรกราฟิกคอมพิวเตอร์และตัวอย่าง ray tracer บางรายการ
ข้อจำกัดทางเทคนิคและข้อควรพิจารณา
- ภาพ P6 8 บิตที่ไม่บีบอัดอาจมีขนาดใหญ่ ภาพ RGB 3840 x 2160 ใช้ข้อมูลพิกเซลประมาณ 24.9 ล้านไบต์ ยังไม่รวมส่วนหัว
- ไม่มีประสิทธิภาพสำหรับการเผยแพร่บนเว็บหรือการถ่ายโอนผ่านเครือข่าย
- ไม่รองรับความโปร่งใสแบบอัลฟาหรือโปรไฟล์สีแบบฝัง
เกร็ดความรู้ทางเทคนิคที่น่าสนใจ
- ตัวอย่าง ray tracer เบื้องต้นบางรายการใช้ PPM เป็นเอาต์พุต เพราะเขียนข้อมูลพิกเซลได้ง่าย
- ใน ASCII PPM ('P3') ภาพคือไฟล์ข้อความของตัวเลขตามตัวอักษร: '255 0 0' สำหรับสีแดง, '0 255 0' สำหรับสีเขียว, '0 0 255' สำหรับสีน้ำเงิน
- ชุดโปรแกรม Netpbm เดิมทีแจกจ่ายบนเทป 4.3BSD Unix ในช่วงปลายทศวรรษ 1980
คำถามทางเทคนิคที่พบบ่อย
เหตุใดหลักสูตรวิทยาศาสตร์คอมพิวเตอร์จึงใช้ PPM?
PPM จัดเก็บค่าพิกเซล RGB พร้อมส่วนหัวสั้น ๆ ทำให้โปรแกรม ray tracer เขียนภาพได้โดยไม่ต้องใช้ codec ซับซ้อน แอปพลิเคชันยังต้องรองรับตัวแปร P3 แบบข้อความและ P6 แบบไบนารี รวมถึงกฎความลึกของตัวอย่าง
PPM แบบ P3 และ P6 แตกต่างกันอย่างไร?
P3 จัดเก็บชุดข้อมูล RGB สามชุดเป็นตัวเลขข้อความ ASCII ธรรมดา ในขณะที่ P6 จัดเก็บชุดข้อมูล RGB สามชุดเป็นไบต์ไบนารีดิบ
แปลงไฟล์ PPM เป็น JPG หรือ PNG ได้อย่างไร
คุณสามารถแปลงไฟล์ PPM เป็น PNG หรือ JPG ได้โดยตรงในเบราว์เซอร์ของคุณโดยใช้ File2File.app โดยไม่มีข้อมูลใดๆ หลุดออกจากอุปกรณ์ของคุณ