Bài viết này cần thêm chú thích nguồn gốc để kiểm chứng thông tin. |
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 tập tin 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).
Độ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.
Một tập tin 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 [1], ở 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.
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.
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.
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