รูปภาพ PNG (.png)

W3C มาตรฐาน

Portable Network Graphics (PNG) เป็นรูปแบบไฟล์กราฟิกแบบเรสเตอร์ที่ไม่มีข้อจำกัดด้านสิทธิบัตร ซึ่งรองรับการบีบอัดข้อมูลแบบไม่สูญเสียคุณภาพ สีแบบมีดัชนี และความโปร่งใสของช่องสัญญาณแอลฟาแบบแปรผัน

แปลง PNG เป็น JPG

ตัวแปลงจาก PNG เป็น JPG ฟรีในเบราว์เซอร์ แปลงไฟล์ได้ทันทีบนอุปกรณ์ของคุณ

บีบอัด PNG ออนไลน์

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

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

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

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

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

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

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

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

ลายเซ็น HEX (OFFSET 0):

89 50 4E 47 0D 0A 1A 0A

การแสดงผลรูปแบบ ASCII: .PNG....

มาตรฐาน: W3C Recommendation (1996) / ISO/IEC 15948:2004

ข้อมูลจำเพาะทางเทคนิค

สถาปัตยกรรมคอนเทนเนอร์คอนเทนเนอร์ไบนารีแบบแบ่งชังก์ โดยแต่ละชังก์มีการตรวจสอบ CRC32 ขนาด 4 ไบต์
การบีบอัดDeflate (LZ77 + การเข้ารหัสฮัฟแมน) พร้อมตัวกรองสแกนไลน์เชิงคาดการณ์ 5 แบบ (None, Sub, Up, Average, Paeth)
การจัดลำดับไบต์Big-Endian (ลำดับไบต์แบบเครือข่าย) สำหรับความยาวชังก์ ขนาดภาพ และค่า CRC
พื้นที่สีsRGB, Display P3, จานสีแบบมีดัชนี (1-8 บิต), ระดับสีเทา, ทรูคัลเลอร์ (24/48-bit)
ช่องสัญญาณและโครงสร้างRGB + แอลฟา (สูงสุด 16 บิตต่อช่องสัญญาณ / 64-bit RGBA)
ขนาดสูงสุด2,147,483,647 x 2,147,483,647 พิกเซล (เลขจำนวนเต็มบวกขนาด 4 ไบต์)
ความโปร่งใสช่องสัญญาณแอลฟาที่ปรับค่าความโปร่งใสได้เต็มรูปแบบ 8 บิต / 16 บิต
การสตรีมและแบบโปรเกรสซีฟอัลกอริทึม interlace 7 รอบ Adam7 ช่วยเรนเดอร์ภาพแบบ 2 มิติทีละส่วนได้

ตารางเปรียบเทียบทางเทคนิค: PNG กับคู่แข่ง

คุณลักษณะทางเทคนิคPNG (ปัจจุบัน)WebPAVIFJPEG
ประเภทการบีบอัดแบบไม่สูญเสียคุณภาพอย่างเคร่งครัด (Deflate + ตัวกรองเชิงคาดการณ์ 2 มิติ)แบบสูญเสียคุณภาพ (VP8) และแบบไม่สูญเสียคุณภาพ (VP8L)แบบสูญเสียคุณภาพ (AV1 intra) และแบบไม่สูญเสียคุณภาพแบบสูญเสียคุณภาพอย่างเคร่งครัด (Discrete Cosine Transform)
ความโปร่งใสแอลฟาช่องสัญญาณแอลฟาแบบแปรผัน 8 บิต / 16 บิตเต็มรูปแบบรองรับช่องสัญญาณแอลฟา 8 บิตรองรับแอลฟา 8 บิต / 10 บิต / 12 บิตไม่รองรับช่องสัญญาณความโปร่งใส
ขนาดไฟล์ (ภาพถ่าย)มักมีขนาดใหญ่กว่ารูปแบบที่สูญเสียข้อมูลเมื่อใช้กับภาพถ่าย ขนาดจริงแตกต่างตามภาพและตัวเข้ารหัสอาจมีขนาดเล็กกว่า JPEG ผลลัพธ์แตกต่างตามภาพและตัวเข้ารหัสอาจมีขนาดเล็กกว่า JPEG ผลลัพธ์แตกต่างตามภาพและตัวเข้ารหัสขนาดกลางมาตรฐาน
ขนาดไฟล์ (กราฟิก/UI)มีขนาดกะทัดรัดมากสำหรับภาพหน้าจอ ภาพลายเส้น และข้อความโหมดไม่สูญเสียคุณภาพยอดเยี่ยมดี แต่เข้ารหัสได้ช้ากว่าแย่ (สร้างสิ่งประดิษฐ์เป็นคลื่นรบกวนตามขอบคม)
ความเข้ากันได้กับเบราว์เซอร์ใช้งานได้สากล 100% ในทุกเบราว์เซอร์ตั้งแต่ปี 1998รองรับในเบราว์เซอร์สมัยใหม่ 97%+รองรับในเบราว์เซอร์สมัยใหม่ 93%+สากล 100%

รูปแบบความเสียหายทั่วไปและคู่มือการกู้คืน Hex

โปรแกรมดูภาพแสดงข้อความ 'Fatal error: Not a valid PNG file' หรือไม่สามารถเปิดได้

สาเหตุหลัก: 8 ไบต์แรกถูกเปลี่ยนแปลงโดยโหมดการถ่ายโอนแบบ ASCII (แปลง 0x0D 0x0A เป็น 0x0A หรือ 0x0D 0x0D 0x0A)

การกู้คืน: เปิดไฟล์ในโปรแกรมแก้ไขฐานสิบหก (hex editor) แล้วตรวจสอบว่า 8 ไบต์แรกตรงกับ '89 50 4E 47 0D 0A 1A 0A' การกู้คืนไบต์ส่วนหัวทั้ง 8 ไบต์ให้ตรงตามนี้มักช่วยกู้ภาพได้

pngcheck รายงาน 'CRC error in chunk IDAT' หรือภาพโหลดมาบางส่วนโดยมีสแกนไลน์ส่วนล่างเสียหาย

สาเหตุหลัก: ความเสียหายของบิตในสตรีมข้อมูล zlib ที่บีบอัด หรือเช็คซัม CRC32 ไม่ถูกต้องในส่วนย่อย IDAT

การกู้คืน: ใช้ pngcheck -f หรือยูทิลิตี้กู้คืนสตรีม Deflate เพื่อคำนวณค่า CRC32 ที่ถูกต้องใหม่ หรือคลายการบีบอัดสแกนไลน์ที่เหลือรอดจนถึงบล็อกที่เสียหาย

ภาพเรนเดอร์ได้ดีในโปรแกรมดูภาพบนเดสก์ท็อปแต่ล้มเหลวในแอปพลิเคชัน iOS

สาเหตุหลัก: iOS คาดหวังรูปแบบสลับไบต์ CgBI ที่เป็นกรรมสิทธิ์ของ Apple หรือส่วนย่อยพื้นที่สีที่ไม่ใช่มาตรฐาน

การกู้คืน: ปรับมาตรฐานภาพโดยใช้ 'pngcrush -revert-iphone-optimizations' เพื่อคืนค่าลำดับ W3C RGBA มาตรฐาน

การวิเคราะห์ความปลอดภัยและเวกเตอร์การโจมตีตัวแยกวิเคราะห์

PNG รองรับในระบบปฏิบัติการและแอปจำนวนมาก ความเสี่ยงด้านความปลอดภัยรวมถึงการใช้หน่วยความจำตัวถอดรหัสจนหมดและบล็อกเสริมที่เป็นอันตราย

เวกเตอร์การโจมตีที่ทราบ

  • ส่วนย่อยข้อมูลเมตา tEXt และ zTXt ขนาดใหญ่เกินไป ทำให้เกิดการปฏิเสธการให้บริการเนื่องจากหน่วยความจำหมด (OOM) ในตัวถอดรหัสที่ไม่มีแซนด์บ็อกซ์
  • ช่องโหว่บัฟเฟอร์ล้นของฮีปใน libpng เวอร์ชันเก่า (เช่น CVE-2015-8126 ใน png_set_PLTE)
  • การโจมตีด้วยการคลายการบีบอัดจนจำนวนพิกเซลล้น โดยไฟล์ภาพขนาดเล็กประกาศมิติขนาดมหาศาล (เช่น 100,000 x 100,000 พิกเซล)
  • การลักลอบนำข้อมูลออกโดยใช้สเตกาโนกราฟี ซ่อนเพย์โหลดที่เข้ารหัสไว้ในส่วนย่อยส่วนตัวเสริม (เช่น eXIf หรือประเภทส่วนย่อยแบบกำหนดเอง)

แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน: ตรวจสอบความถูกต้องของขนาดภาพเสมอก่อนจัดสรรบัฟเฟอร์พิกเซลในหน่วยความจำ ลบส่วนย่อยเสริมที่ไม่จำเป็นออก (eXIf, tEXt) เมื่อมีการอัปโหลดของผู้ใช้โดยใช้เครื่องมือทำความสะอาดข้อมูลที่ปลอดภัยต่อหน่วยความจำ

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

2004ได้รับการกำหนดมาตรฐานในระดับสากลว่าเป็น ISO/IEC 15948
1996PNG 1.0 เผยแพร่เป็นข้อแนะนำของ W3C
1995สร้างขึ้นบน Usenet comp.graphics เพื่อเป็นทางเลือกแบบเปิดแทน GIF หลังจาก Unisys เรียกเก็บค่าธรรมเนียมสิทธิบัตร LZW

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

  • PNG ใช้การบีบอัดแบบไม่สูญเสียข้อมูล ดังนั้นการเข้ารหัสภาพที่ไม่เปลี่ยนแปลงจะไม่ทำให้เกิดการสูญเสียจากการบีบอัด แต่การแก้ไขหรือแปลงสีอาจเปลี่ยนค่าพิกเซลได้
  • ความโปร่งใสแอลฟา 8 บิตแบบไล่ระดับช่วยให้ผสานภาพเข้ากับพื้นหลังที่ซับซ้อนได้อย่างแนบเนียน
  • ส่วนย่อยการแก้ไขแกมมาและโครมาติซิตี้ช่วยให้การเรนเดอร์มีความสม่ำเสมอในจอภาพที่หลากหลาย

ข้อจำกัดทางเทคนิคและข้อควรพิจารณา

  • ขนาดไฟล์ใหญ่กว่ารูปแบบที่มีการสูญเสียคุณภาพสมัยใหม่อย่าง WebP หรือ AVIF สำหรับเนื้อหาภาพถ่ายอย่างเห็นได้ชัด
  • ไม่มีภาพเคลื่อนไหวหลายเฟรมในตัวสำหรับ PNG มาตรฐาน (ต้องใช้ส่วนขยาย APNG)
  • ความลึกของสีสูง (16 บิตต่อช่องสัญญาณ) สร้างบัฟเฟอร์ถอดรหัสในหน่วยความจำขนาดใหญ่ที่ไม่ได้บีบอัด

เกร็ดความรู้ทางเทคนิคที่น่าสนใจ

  • ส่วนหัวลายเซ็น 8 ไบต์ออกแบบมาโดยเฉพาะเพื่อตรวจจับความเสียหายของอักขระขึ้นบรรทัดใหม่ CR/LF จากการถ่ายโอนผ่าน FTP
  • คำย่อแบบวนซ้ำที่ไม่เป็นทางการสำหรับ PNG คือ 'PNG's Not GIF'
  • Apple ใช้ส่วนย่อย CgBI ที่เป็นกรรมสิทธิ์ใน PNG ของแอป iOS ซึ่งสลับลำดับจาก RGBA เป็น BGRA เพื่อการเรนเดอร์ผ่าน GPU โดยตรง

คำถามทางเทคนิคที่พบบ่อย

ทำไมขนาดไฟล์ PNG จึงเพิ่มขึ้นบางครั้งเมื่อบันทึกในโปรแกรมแก้ไขภาพ

ชุดซอฟต์แวร์ที่แตกต่างกันใช้ระดับการบีบอัด Deflate และฮิวทริสติกส์ตัวกรองสแกนไลน์เชิงคาดการณ์ที่ต่างกัน โปรแกรมอย่าง Photoshop มักจะผนวกโปรไฟล์สีที่ไม่ได้บีบอัด บล็อกข้อมูลเมตา XMP และขนาดส่วนย่อย IDAT ที่ไม่ได้ปรับให้เหมาะสม เครื่องมือเฉพาะทางอย่าง File2File.app Compressor จะประเมินตัวกรองสแกนไลน์ทั้ง 5 แบบใหม่เพื่อให้ได้ขนาดไฟล์ที่เล็กที่สุด

ความแตกต่างระหว่าง PNG-8 และ PNG-24 คืออะไร

PNG-8 ใช้จานสีแบบมีดัชนีสูงสุด 256 สี (คล้ายกับ GIF) ทำให้ได้ไฟล์ขนาดเล็กมากที่เหมาะสำหรับไอคอนอย่างง่าย PNG-24 รองรับ 16.7 ล้านสี (Truecolor 8 บิตต่อช่องสัญญาณ) โดยที่ PNG-32 จะเพิ่มช่องสัญญาณความโปร่งใสแอลฟา 8 บิตเข้ามาด้วย

เหตุใด PNG จึงมีตัวกรองสแกนไลน์เชิงคาดการณ์ถึง 5 แบบ

Deflate ทำหน้าที่บีบอัดรูปแบบไบต์ที่ซ้ำกัน เนื่องจากค่าพิกเซลภาพถ่ายหรือไล่ระดับมีการเปลี่ยนแปลงทีละน้อย PNG จึงใช้ตัวกรองกับสแกนไลน์แต่ละบรรทัด (None, Sub, Up, Average, Paeth) โดยคำนวณความแตกต่างระหว่างพิกเซลที่อยู่ติดกัน การดำเนินการนี้จะแปลงข้อมูลไล่ระดับให้เป็นชุดสตริงของไบต์ที่มีค่าใกล้ศูนย์ ซึ่งจะบีบอัดได้ดีขึ้นอย่างมากภายใต้อัลกอริทึม Deflate

PNG รองรับพื้นที่สี CMYK สำหรับการพิมพ์เชิงพาณิชย์หรือไม่

ไม่รองรับ ข้อกำหนดอย่างเป็นทางการของ W3C PNG จำกัดประเภทสีไว้เฉพาะสเกลสีเทา (Grayscale), แบบมีดัชนี (Indexed) และ RGB โดยเจตนา เวิร์กโฟลว์การพิมพ์ระดับมืออาชีพที่ต้องใช้ CMYK จะต้องใช้คอนเทนเนอร์ TIFF หรือ PDF

คู่การแปลงไฟล์ PNG ที่เกี่ยวข้อง

PNG เป็น JPG

การแปลงภาพแรสเตอร์ PNG เป็นรูปแบบ JPEG จะช่วยลดขนาดไฟล์โดยใช้การบีบอัดแบบสูญเสียข้อมูล ซึ่งทำให้รูปภาพโหลดเร็วขึ้นบนเว็บไซต์และใช้พื้นที่จัดเก็บน้อยลง

JPG เป็น PNG

การแปลงภาพแรสเตอร์ JPEG แบบสูญเสียข้อมูลให้เป็นภาพแรสเตอร์ PNG แบบไม่สูญเสียข้อมูล ช่วยป้องกันการเสื่อมของคุณภาพซ้ำซ้อนและรองรับความโปร่งใสของช่องอัลฟา

PNG เป็น WEBP

การแปลงภาพ PNG เป็น WebP อาจลดขนาดไฟล์โดยคงความโปร่งใสไว้ ผลลัพธ์ขึ้นอยู่กับการเข้ารหัสแบบสูญเสียหรือไม่สูญเสียข้อมูลและเนื้อหาภาพ

WEBP เป็น PNG

การแปลง WebP เป็น PNG สร้างภาพนิ่งสำหรับซอฟต์แวร์ที่รองรับ PNG แต่ไม่เก็บภาพเคลื่อนไหวของ WebP และไม่สามารถกู้คืนรายละเอียดจากแหล่งที่สูญเสียข้อมูลได้

HEIC เป็น PNG

การแปลง HEIC เป็น PNG เปลี่ยนภาพที่บีบอัดด้วย HEVC แบบสูญเสียข้อมูลให้เป็นไฟล์กราฟิกแบบไม่สูญเสียข้อมูลที่รองรับอย่างกว้างขวาง

SVG เป็น PNG

แปลงกราฟิก SVG ที่ปรับขนาดได้เป็นภาพแรสเตอร์ PNG แบบพิกเซลคงที่ เพื่อให้ใช้งานร่วมกับแอปพลิเคชันต่าง ๆ ได้

PNG เป็น SVG

ฝังภาพ PNG แบบแรสเตอร์ไว้ในคอนเทนเนอร์ XML ของ SVG เพื่อให้ปรับขนาดเลย์เอาต์เว็บได้และใช้งานร่วมกับเลย์เอาต์เวกเตอร์

PSD เป็น PNG

แปลงกราฟิก Adobe Photoshop PSD เป็นภาพ PNG แบบไม่สูญเสียรายละเอียด พร้อมช่องโปร่งใสแอลฟาเต็มรูปแบบ ทำงานบนเบราว์เซอร์ของคุณทันทีโดยไม่มีการส่งข้อมูลไปยังเซิร์ฟเวอร์