Ảnh PNG (.png)

Khuyến Tiêu chuẩn

Portable Network Graphics (PNG) là định dạng tệp đồ họa mành không bị ràng buộc bởi bằng sáng chế, hỗ trợ nén dữ liệu không mất dữ liệu, màu lập chỉ mục và độ trong suốt biến thiên của kênh alpha.

Chuyển đổi PNG sang JPG

Trình chuyển đổi từ PNG sang JPG miễn phí trên trình duyệt. Chuyển đổi tệp ngay lập tức trên thiết bị của bạn.

Nén PNG trực tuyến

Riêng tư - tệp không bao giờ rời khỏi thiết bị của bạn

Kiểm tra & Siêu dữ liệu

Các hệ điều hành và trình phân tích tệp nhận dạng tệp PNG bằng cách kiểm tra chuỗi byte nhị phân đầu tệp:

Chọn hoặc thả tệp vào đây

Riêng tư - tệp không bao giờ rời khỏi thiết bị của bạn

Hoặc dán Ctrl+V
Cam kết bảo vệ quyền riêng tư, không truyền dữ liệu qua mạng: 0 byte được tải lên máy chủ bên ngoài. Toàn bộ quá trình xử lý diễn ra cục bộ trong hộp cát trình duyệt của bạn.

Chữ ký ở đầu tệp (mẫu byte nhận diện)

Các hệ điều hành và trình phân tích tệp nhận dạng tệp PNG bằng cách kiểm tra chuỗi byte nhị phân đầu tệp:

CHỮ KÝ HEX (OFFSET 0):

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

BIỂU DIỄN ASCII: .PNG....

Tiêu chuẩn hóa: Khuyến nghị W3C (1996) / ISO/IEC 15948:2004

Thông số kỹ thuật

Kiến trúc ContainerTrình chứa nhị phân dựa trên khối (chunk) với cơ chế xác thực CRC32 4 byte cho mỗi khối
NénDeflate (mã hóa LZ77 + Huffman) với 5 bộ lọc dòng quét dự đoán (None, Sub, Up, Average, Paeth)
Thứ tự byteThứ tự byte lớn (Big-Endian) cho chiều dài khối, kích thước và mã CRC
Không gian màusRGB, Display P3, Bảng màu lập chỉ mục (1-8 bit), Ảnh xám, Màu thật (24/48-bit)
Kênh & Cấu trúcRGB + Alpha (Lên đến 16 bit cho mỗi kênh / RGBA 64-bit)
Kích thước tối đa2,147,483,647 x 2,147,483,647 pixel (số nguyên không dấu 4 byte)
Độ trong suốtKênh độ trong suốt alpha biến thiên toàn phần 8-bit / 16-bit
Truyền phát & Tăng dầnThuật toán đan xen 7 lượt Adam7 cho phép kết xuất dòng quét 2D lũy tiến

Ma trận so sánh kỹ thuật: PNG so với các đối thủ

Thuộc tính kỹ thuậtPNG (Hiện tại)WebPAVIFJPEG
Loại nénNén hoàn toàn không mất dữ liệu (Deflate + bộ lọc dự đoán 2D)Có tổn hao (VP8) & Không mất dữ liệu (VP8L)Có tổn hao (AV1 nội bộ) & Không mất dữ liệuNén hoàn toàn có tổn hao (Biến đổi Cosin rời rạc)
Độ trong suốt AlphaKênh alpha biến thiên toàn phần 8-bit / 16-bitHỗ trợ kênh alpha 8-bitHỗ trợ alpha 8-bit / 10-bit / 12-bitKhông hỗ trợ kênh độ trong suốt
Kích thước tệp (Ảnh chụp)Thường lớn hơn định dạng nén mất dữ liệu khi dùng cho ảnh chụp; kích thước tương đối tùy ảnh và bộ mã hóa.Có thể nhỏ hơn JPEG; kết quả tùy ảnh và bộ mã hóa.Có thể nhỏ hơn JPEG; kết quả tùy ảnh và bộ mã hóa.Mức cơ sở trung bình
Kích thước tệp (Đồ họa/Giao diện)Cực kỳ gọn nhẹ cho ảnh chụp màn hình, nghệ thuật đường nét và văn bảnChế độ không mất dữ liệu xuất sắcTốt, nhưng mã hóa chậm hơnKém (tạo ra hiện tượng nhiễu hạt dọc theo các cạnh sắc nét)
Tương thích trình duyệtPhổ biến 100% trên tất cả các trình duyệt kể từ năm 1998Hỗ trợ trình duyệt hiện đại trên 97%+Hỗ trợ trình duyệt hiện đại trên 93%+Phổ biến 100%

Các dạng hỏng thường gặp và hướng dẫn khôi phục bằng mã hex

Trình xem ảnh hiển thị 'Fatal error: Not a valid PNG file' hoặc không mở được.

Nguyên nhân gốc rễ: 8 byte đầu tiên đã bị thay đổi bởi chế độ truyền tải ASCII (biến đổi 0x0D 0x0A thành 0x0A hoặc 0x0D 0x0D 0x0A).

Khắc phục: Mở tệp trong trình chỉnh sửa hex và xác minh 8 byte đầu tiên khớp với '89 50 4E 47 0D 0A 1A 0A'. Khôi phục chính xác 8 byte tiêu đề này thường giúp khôi phục hình ảnh.

pngcheck báo cáo 'CRC error in chunk IDAT' hoặc hình ảnh tải một phần với các dòng quét phía dưới bị hỏng.

Nguyên nhân gốc rễ: Lỗi bit trong luồng dữ liệu zlib được nén hoặc tổng kiểm tra CRC32 không hợp lệ trong khối IDAT.

Khắc phục: Sử dụng pngcheck -f hoặc các tiện ích khôi phục luồng Deflate để tính toán lại các giá trị CRC32 hợp lệ, hoặc giải nén các dòng quét còn nguyên vẹn lên đến khối bị hỏng.

Hình ảnh hiển thị tốt trong trình xem trên máy để bàn nhưng gặp lỗi trong các ứng dụng iOS.

Nguyên nhân gốc rễ: iOS mong đợi định dạng hoán đổi byte CgBI độc quyền của Apple hoặc các khối không gian màu phi tiêu chuẩn.

Khắc phục: Chuẩn hóa hình ảnh bằng cách sử dụng 'pngcrush -revert-iphone-optimizations' để khôi phục thứ tự RGBA theo chuẩn W3C.

Phân tích bảo mật và các đường tấn công nhằm vào bộ phân tích cú pháp

PNG được nhiều hệ điều hành và ứng dụng hỗ trợ. Rủi ro bảo mật gồm việc làm cạn bộ nhớ bộ giải mã và các khối dữ liệu phụ độc hại.

Các véc-tơ tấn công đã biết

  • Các khối siêu dữ liệu tEXt và zTXt quá lớn kích hoạt tình trạng từ chối dịch vụ cạn kiệt bộ nhớ (OOM) trong các trình giải mã không được cách ly (sandbox).
  • Các lỗ hổng tràn bộ đệm heap trong các phiên bản libpng cũ (ví dụ: CVE-2015-8126 trong png_set_PLTE).
  • Các cuộc tấn công giải nén tràn pixel trong đó một hình ảnh có kích thước tệp nhỏ khai báo kích thước rất lớn (ví dụ: 100.000 x 100.000 pixel).
  • Tuồn dữ liệu bằng kỹ thuật giấu tin: che giấu các tải trọng được mã hóa trong những khối riêng tư phụ trợ (ví dụ: eXIf hoặc loại khối tùy chỉnh).

Biện pháp phòng thủ tốt nhất: Luôn xác thực kích thước hình ảnh trước khi cấp phát bộ đệm pixel trong bộ nhớ. Loại bỏ các khối phụ trợ không cần thiết (eXIf, tEXt) khi người dùng tải lên bằng trình làm sạch an toàn bộ nhớ.

Nguồn gốc lịch sử và các cột mốc

2004Được chuẩn hóa quốc tế theo tiêu chuẩn ISO/IEC 15948.
1996PNG 1.0 được xuất bản dưới dạng Khuyến nghị của W3C.
1995Được tạo ra trên Usenet comp.graphics như một giải pháp thay thế mở cho GIF sau khi Unisys thực thi phí bản quyền bằng sáng chế LZW.

Ưu điểm & Lợi ích chính

  • PNG dùng phương pháp nén không mất dữ liệu, vì vậy mã hóa ảnh không thay đổi không gây mất mát do nén; việc chỉnh sửa hoặc chuyển đổi màu vẫn có thể làm thay đổi giá trị điểm ảnh.
  • Độ trong suốt alpha 8-bit mượt mà cho phép pha trộn rõ ràng trên các nền phức tạp.
  • Các khối hiệu chỉnh gamma và độ sáng đảm bảo kết xuất đồng nhất trên nhiều màn hình khác nhau.

Hạn chế & Nhược điểm kỹ thuật

  • Kích thước tệp lớn hơn đáng kể so với các định dạng có tổn hao hiện đại như WebP hoặc AVIF đối với nội dung ảnh chụp.
  • Không hỗ trợ hoạt ảnh đa khung hình gốc trong PNG tiêu chuẩn (yêu cầu phần mở rộng APNG).
  • Độ sâu bit cao (16-bit mỗi kênh) tạo ra bộ đệm giải mã trong bộ nhớ chưa nén rất lớn.

Thông tin kỹ thuật thú vị

  • Tiêu đề nhận diện 8 byte được thiết kế đặc biệt để phát hiện lỗi hỏng ký tự xuống dòng CR/LF do truyền tệp qua FTP.
  • Từ viết tắt đệ quy không chính thức của PNG là 'PNG's Not GIF'.
  • Apple sử dụng khối CgBI độc quyền trong các tệp PNG ứng dụng iOS, giúp đảo ngược RGBA thành BGRA để kết xuất GPU trực tiếp.

Các câu hỏi kỹ thuật thường gặp

Tại sao kích thước tệp PNG đôi khi tăng lên khi được lưu trong các trình chỉnh sửa ảnh?

Các bộ phần mềm khác nhau sử dụng các cấp độ nén Deflate và thuật toán heuristic bộ lọc dòng quét dự đoán khác nhau. Các chương trình như Photoshop thường đính kèm các cấu hình màu chưa nén, các khối siêu dữ liệu XMP và kích thước khối IDAT chưa được tối ưu hóa. Các công cụ chuyên dụng như File2File.app Compressor đánh giá lại tất cả 5 bộ lọc dòng quét để đạt được kích thước tệp tối thiểu.

Sự khác biệt giữa PNG-8 và PNG-24 là gì?

PNG-8 sử dụng bảng màu lập chỉ mục lên tới 256 màu (tương tự như GIF), tạo ra các tệp rất nhỏ phù hợp cho các biểu tượng đơn giản. PNG-24 hỗ trợ 16,7 triệu màu (màu RGB 8 bit mỗi kênh), với PNG-32 bổ sung thêm kênh độ trong suốt alpha 8-bit.

Tại sao PNG lại có 5 bộ lọc dòng quét dự đoán?

Deflate nén các mẫu byte lặp đi lặp lại. Do giá trị pixel dạng ảnh chụp hoặc dạng gradient thay đổi dần dần, bộ lọc PNG lọc từng dòng quét (None, Sub, Up, Average, Paeth) bằng cách tính toán sự khác biệt giữa các pixel lân cận. Điều này chuyển đổi dữ liệu gradient thành các chuỗi byte gần bằng không, giúp nén tốt hơn đáng kể dưới thuật toán Deflate.

PNG có hỗ trợ không gian màu CMYK cho in ấn thương mại không?

Không. Thông số kỹ thuật PNG chính thức của W3C cố ý giới hạn các loại màu ở mức Ảnh xám, Chỉ mục và RGB. Quy trình làm việc in ấn chuyên nghiệp yêu cầu CMYK phải sử dụng định dạng TIFF hoặc định dạng PDF.

Các cặp chuyển đổi PNG liên quan

PNG sang JPG

Chuyển ảnh raster PNG sang JPEG bằng nén mất dữ liệu giúp giảm kích thước tệp, tải ảnh nhanh hơn trên web và tiết kiệm dung lượng lưu trữ.

JPG sang PNG

Chuyển ảnh raster JPEG mất dữ liệu sang ảnh raster PNG không mất dữ liệu giúp tránh giảm chất lượng qua các lần lưu tiếp theo và hỗ trợ độ trong suốt của kênh alpha.

PNG sang WEBP

Chuyển PNG sang WebP có thể giảm dung lượng mà vẫn giữ độ trong suốt; kết quả tùy mã hóa mất dữ liệu hay không mất dữ liệu và nội dung ảnh.

WEBP sang PNG

Chuyển WebP sang PNG tạo ảnh tĩnh cho phần mềm hỗ trợ PNG; không giữ hoạt ảnh WebP và không khôi phục được chi tiết đã mất từ nguồn nén mất dữ liệu.

HEIC sang PNG

Việc chuyển đổi HEIC sang PNG giúp biến các ảnh được nén bằng HEVC có tổn hao thành các tệp đồ họa không tổn hao được hỗ trợ rộng rãi.

SVG sang PNG

Chuyển tệp vector SVG thành ảnh raster PNG, biến đồ họa dựa trên mã có thể co giãn thành lưới điểm ảnh cố định để tương thích với nhiều ứng dụng.

PNG sang SVG

Đóng gói hình ảnh raster PNG bên trong vùng chứa vector SVG XML để hiển thị co giãn trên web và tích hợp vào bố cục tương thích với vector.

PSD sang PNG

Chuyển đổi đồ họa Adobe Photoshop PSD thành ảnh PNG không mất dữ liệu, hỗ trợ đầy đủ độ trong suốt của kênh alpha, ngay trong trình duyệt mà không gửi dữ liệu lên máy chủ.