PNG

Một hình ảnh PNG với lớp 8-bit trong suốt (trên), được chèn vào hình nền là các ô vuông (dưới).

PNG (từ viết tắt trong tiếng Anh của Portable Network Graphics; chính thức đọc như "pinh") là một dạng hình ảnh sử dụng phương pháp nén dữ liệu mới - không làm mất đi dữ liệu gốc. PNG được tạo ra nhằm cải thiện và thay thế định dạng ảnh GIF với một định dạng hình ảnh không đòi hỏi phải có giấy phép sáng chế khi sử dụng. PNG được hỗ trợ bởi thư viện tham chiếu libpng, một thư viện nền tảng độc lập bao gồm các hàm của C để quản lý các hình ảnh PNG.

Những  PNG thường có phần mở rộng là PNG và png đã được gán kiểu chuẩn MIME là image/png (được công nhận vào ngày 14 tháng 10 năm 1996).

Lịch sử và phát triển 

Động cơ thúc đẩy cho việc tạo ra định dạng PNG bắt đầu vào khoảng đầu năm 1995, sau khi Unisys công bố họ sẽ áp dụng bằng sáng chế vào thuật toán nén dữ liệu LZW- được sử dụng trong định dạng GIF. Thuật toán được bảo vệ bởi bằng công nhận độc quyền sáng tạo ở trong nước Mỹ và tất cả các nước trên thế giới. Tuy nhiên, cũng đã có một số vấn đề với định dạng GIF khi cần có một số thay đổi trên hình ảnh, nhất giới hạn của nó là 256 màu trong thời điểm máy tính có khả năng hiển thị nhiều hơn 256 màu đang trở nên phổ biến. Mặc dù định dạng GIF có thể thể hiện các hình ảnh động, song PNG vẫn được quyết định là định dạng hình ảnh đơn (chỉ có một hình duy nhất). Một người "anh em" của nó là MNG đã được tạo ra để giải quyết vấn đề ảnh động. PNG lại tăng thêm sự phổ biến của nó vào tháng 8 năm 1999, sau khi hãng Unisys huỷ bỏ giấy phép của họ đối với các lập trình viên phần mềm miễn phí, và phi thương mại.

 Phiên bản 1.0 của đặc tả PNG được phát hành vào ngày 1 tháng 7 năm 1996, và sau đó xuất hiện vơi tư cách RFC 2083. Nó được tổ chức W3C khuyến nghị vào ngày 1 tháng 10 năm 1996.
 Phiên bản 1.1, với một số thay đổi nhỏ và thêm vào 3 thành phần mới, được phát hành vào ngày 31 tháng 12 năm 1998.
 Phiên bản 1.2, thêm vào một thành phần mở rộng, được phát hành vào ngày 11 tháng 8 năm 1999.
 PNG giờ đây là một chuẩn quốc tế (ISO/IEC 15948:2003), và cũng được công bố như một khuyến nghị của W3C vào ngày 10 tháng 11 năm 2003. Phiên bản hiện tại của PNG chỉ khác chút ít so với phiên bản 1.2 và không có thêm thành phần mới nào.

Thông tin kỹ thuật

Phần đầu của tập tin 
Một  PNG bao gồm 8-byte ký hiệu (89 50 4E 47 0D 0A 1A 0A được viết trong hệ thống có cơ số 16, chứa các chữ "PNG" và 2 dấu xuống dòng , ở giữa là sắp xếp theo số lượng của các thành phần, mỗi thành phần đều chứa thông tin về hình ảnh. Cấu trúc dựa trên các thành phần được thiết kế cho phép định dạng PNG có thể tương thích với các phiên bản cũ khi sử dụng.

Các "thành phần" trong tập tin 

PNG là cấu trúc như một chuỗi các thành phần, mỗi thành phần chứa kích thước, kiểu, dữ liệu, và mã sửa lỗi CRC ngay trong nó.

Chuỗi được gán tên bằng 4 chữ cái phân biệt chữ hoa chữ thường. Sự phân biệt này giúp bộ giải mã phát hiện bản chất của chuỗi khi nó không nhận dạng được.

Với chữ cái đầu, viết hoa thể hiện chuỗi này là thiết yếu, nếu không thì ít cần thiết hơn ancillary. Chuỗi thiết yếu chứa thông tin cần thiết để đọc được tệp và nếu bộ giải mã không nhận dạng được chuỗi thiết yếu, việc đọc tệp phải được hủy.

Thành phần cơ bản 
Một bộ giải mã (decoder) phải có thể thông dịch để đọc và hiển thị một tệp PNG.
 IHDR phải là thành phần đầu tiên, nó chứa đựng header
 PLTE chứa đựng bảng màu (danh sách các màu)
 IDAT chứa đựng ảnh. Ảnh này có thể được chia nhỏ chứa trong nhiều phần IDAT. Điều này làm tăng kích cỡ của tệp lên một ít nhưng nó làm cho việc phát sinh ảnh PNG mượt hơn (streaming manner).
 IEND đánh dấu điểm kết thúc của ảnh.

Ảnh động 
PNG không hỗ trợ ảnh động. Nhưng một định dạng khác phức tạp hơn dựa trên ý tưởng và các chunk của PNG là MNG được thiết kế cho ảnh động, tuy nhiên định dạng này không cho phép 'tương thích lùi' tức là hiển thị một ảnh trong trường hợp hệ thống không hỗ trợ được hình động. Một định dạng khác là APNG cũng dựa trên PNG hỗ trợ ảnh động và tương thích lùi, nhưng đơn giản hơn MNG. Tuy nhiên, đến thời điểm 2005 những định dạng này vẫn chưa được hỗ trợ rộng rãi

Tham khảo

Liên kết ngoài

libpng.org 
 PNG Home Site
 libpng Home Page
 PNG-supporting browsers - overview of PNG status in different web browsers. First Windows IE support in 4.0b1; Netscape 4.04  .
 The Story of PNG by Greg Roelofs
 PNG: The Definitive Guide (Online Version) by Greg Roelofs

W3C 
 PNG Specification (Second Edition), W3C Recommendation ngày 10 tháng 11 năm 2003
 Test inline PNG images

Các trang khác 
 RFC 2083
 PNG transparency test
 Transparent PNG Generator
 The GD-library to generate dynamic PNG-files with PHP
 A guide to PNG optimization
 PNG as a future proof format 
 PNG Adam7 interlacing
 List of PNG-related resources, libraries and papers 
 PNG Files Do Not Show Transparency in Internet Explorer
 The PNG problem in Windows Internet Explorer 
 png transparency in IE 

Định dạng tập tin hình ảnh
Chuẩn ISO
Định dạng mở
Tiêu chuẩn của W3C
Tiêu chuẩn ISO