Định dạng PNG không mất dữ liệu vì nó có tham số nén?

Định dạng PNG được cho là định dạng không mất dữ liệu, nhưng khi bạn lưu hình ảnh dưới dạng tệp PNG, bạn sẽ được yêu cầu chọn mức nén. Điều này có nghĩa là định dạng PNG thực sự không mất dữ liệu? Bài đăng Hỏi và Đáp của SuperUser hôm nay giúp giải tỏa sự nhầm lẫn cho một độc giả tò mò.

Phiên Hỏi & Đáp hôm nay đến với chúng tôi với sự hỗ trợ của SuperUser — một phần của Stack Exchange, một nhóm các trang web Hỏi & Đáp do cộng đồng điều hành.

Câu hỏi

Trình đọc SuperUser pkout muốn biết chất lượng của hình ảnh PNG có bị ảnh hưởng bởi mức nén đã chọn hay không:

Theo tôi hiểu, các tệp PNG sử dụng tính năng nén không mất dữ liệu. Tuy nhiên, khi tôi đang sử dụng trình chỉnh sửa hình ảnh như Gimp và cố gắng lưu hình ảnh dưới dạng tệp PNG, nó sẽ yêu cầu mức nén nằm trong khoảng từ 0 đến 9.

Nếu nó có một tham số nén ảnh hưởng đến độ chính xác trực quan của hình ảnh nén, thì PNG không mất dữ liệu sẽ như thế nào? Có ai đó giải thích điều này cho tôi biết không? Tôi có nhận được hành vi không mất dữ liệu chỉ khi tôi đặt mức nén thành 9 không?

Có sự khác biệt về chất lượng của hình ảnh tùy thuộc vào mức độ nén bạn chọn không?

Câu trả lời

Các cộng tác viên của SuperUser LordNeckbeard và jjlin có câu trả lời cho chúng tôi. Đầu tiên, LordNeckbeard:

PNG được nén, nhưng không mất dữ liệu

Mức độ nén là sự cân bằng giữa kích thước tệp và tốc độ mã hóa / giải mã. Nói một cách khái quát quá mức, ngay cả các định dạng không phải hình ảnh như FLAC cũng có những khái niệm tương tự.

Các mức nén khác nhau, cùng một đầu ra được giải mã

Mặc dù kích thước tệp khác nhau do mức độ nén khác nhau, đầu ra được giải mã thực tế sẽ giống hệt nhau. Bạn có thể so sánh các băm MD5 của các đầu ra được giải mã với ffmpeg bằng cách sử dụng MD5 muxer. Điều này được thể hiện rõ nhất với một số ví dụ.

Tạo tệp PNG

  • Theo mặc định, ffmpeg sẽ sử dụng -compression_level 100 cho đầu ra PNG.
  • Một thử nghiệm nhanh, cẩu thả cho thấy rằng 100 (mức nén cao nhất) mất khoảng ba lần để mã hóa và lâu hơn năm lần để giải mã so với 0 (mức nén thấp nhất) trong ví dụ này.

So sánh kích thước tệp

Giải mã tệp PNG và hiển thị mã băm MD5

Vì cả hai hàm băm đều giống nhau, bạn có thể yên tâm rằng các kết quả đầu ra được giải mã (các tệp thô chưa được nén) hoàn toàn giống nhau.

Tiếp theo là câu trả lời từ jjlin:

PNG là không mất dữ liệu. GIMP có nhiều khả năng không sử dụng lựa chọn từ ngữ tốt nhất trong trường hợp này.

Hãy nghĩ về nó như là chất lượng nén hoặc là mức độ nén. Với độ nén thấp hơn, bạn nhận được tệp lớn hơn, nhưng mất ít thời gian hơn để tạo ra, trong khi với độ nén cao hơn, bạn nhận được tệp nhỏ hơn và mất nhiều thời gian hơn để tạo ra.

Thông thường, bạn nhận được lợi nhuận giảm dần, tức là không giảm nhiều về kích thước so với mức tăng thời gian cần thiết khi tăng lên mức nén cao nhất, nhưng điều đó là tùy thuộc vào bạn.

Có điều gì đó để thêm vào lời giải thích? Tắt âm thanh trong các ý kiến. Bạn muốn đọc thêm câu trả lời từ những người dùng Stack Exchange am hiểu công nghệ khác? Kiểm tra toàn bộ chủ đề thảo luận ở đây.


$config[zx-auto] not found$config[zx-overlay] not found