Ảnh PNG (.png)
Khuyến Tiêu chuẩnPortable 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ữ 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 0ABIỂ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 Container | Trì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én | Deflate (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ự byte | Thứ tự byte lớn (Big-Endian) cho chiều dài khối, kích thước và mã CRC |
| Không gian màu | sRGB, 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úc | RGB + Alpha (Lên đến 16 bit cho mỗi kênh / RGBA 64-bit) |
| Kích thước tối đa | 2,147,483,647 x 2,147,483,647 pixel (số nguyên không dấu 4 byte) |
| Độ trong suốt | Kênh độ trong suốt alpha biến thiên toàn phần 8-bit / 16-bit |
| Truyền phát & Tăng dần | Thuậ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ật | PNG (Hiện tại) | WebP | AVIF | JPEG |
|---|---|---|---|---|
| Loại nén | Né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ệu | Nén hoàn toàn có tổn hao (Biến đổi Cosin rời rạc) |
| Độ trong suốt Alpha | Kênh alpha biến thiên toàn phần 8-bit / 16-bit | Hỗ trợ kênh alpha 8-bit | Hỗ trợ alpha 8-bit / 10-bit / 12-bit | Khô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ản | Chế độ không mất dữ liệu xuất sắc | Tốt, nhưng mã hóa chậm hơn | Ké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ệt | Phổ biến 100% trên tất cả các trình duyệt kể từ năm 1998 | Hỗ 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
Ư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
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ữ.
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.
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.
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.
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.
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.
Đó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.
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ủ.