พิกเซลแมปแบบพกพา (.ppm)

Netpbm มาตรฐาน

Portable Pixmap Format (PPM) คือมาตรฐานสี RGB แบบเต็มรูปแบบของตระกูลกราฟิก Netpbm ซึ่งมอบการแสดงผลภาพดิจิทัล Truecolor แบบไม่บีบอัดที่เรียบง่ายที่สุดเท่าที่จะเป็นไปได้

ตรวจสอบไฟล์และข้อมูลเมตา

ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ PPM โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:

เลือกหรือวางไฟล์ที่นี่

เป็นส่วนตัว - ไฟล์จะไม่ออกจากอุปกรณ์ของคุณ

หรือวาง Ctrl+V
รับประกันความเป็นส่วนตัวโดยไม่มีการส่งข้อมูลผ่านเครือข่าย: อัปโหลด 0 ไบต์ไปยังเซิร์ฟเวอร์ภายนอก การประมวลผลทั้งหมดเกิดขึ้นภายในแซนด์บ็อกซ์ของเบราว์เซอร์ของคุณ

ลายเซ็นส่วนหัวระดับไบต์

ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ 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 (ปัจจุบัน)BMPPNGTIFF
ความลึกของสีTruecolor RGB 24-bit / 48-bitRGBA 1-bit ถึง 32-bitRGBA 24-bit / 48-bitRGBA 8-bit ถึง 64-bit
รูปแบบพี่น้องใน NetpbmPPM (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) ผ่านการประกาศจัดสรรหน่วยความจำที่มากเกินไป

แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน: บังคับใช้ขีดจำกัดการจัดสรรหน่วยความจำอย่างเข้มงวดตามขนาดไฟล์จริงก่อนถอดรหัส

ประวัติความเป็นมาและเหตุการณ์สำคัญ

2000เพิ่มความลึกสี 48 บิต (16 บิตต่อแชนเนล) ลงในข้อกำหนด Netpbm P6
1993กลายเป็นรูปแบบขั้นกลางที่เครื่องมือแปลงกราฟิก Unix บางรายการในชุด Netpbm ใช้
1989Jef Poskanzer ทำให้กลุ่มสามรูปแบบ Netpbm (PBM, PGM, PPM) ครบถ้วนด้วยรูปแบบ PPM สีเต็มรูปแบบ

ข้อได้เปรียบและจุดเด่นสำคัญ

  • ส่วนหัวและค่าพิกเซลของ 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 โดยไม่มีข้อมูลใดๆ หลุดออกจากอุปกรณ์ของคุณ