Tại sao mọi người sử dụng hình ảnh JPG?


17

Tôi thấy hình ảnh JPG ở khắp mọi nơi. Nhưng tại sao?

Các tệp PNG có độ mờ đục, trong khi JPG thì không. Tôi đã thử xuất một số hình ảnh sang PNG và JPG để so sánh kích thước và cả hai đều khớp với nhau hoặc PNG nhỏ hơn (tất nhiên tùy thuộc vào hình ảnh).

nhập mô tả hình ảnh ở đây

Đây là hình ảnh JPG 512x512 có nội dung "JPG"

nhập mô tả hình ảnh ở đây

Và đây là hình ảnh PNG 512x512 có chữ "PNG".

JPG là 31,7kb và PNG là 25,9kb

Vì vậy, những gì cho?


3
Một cái gì đó bạn cũng nên biết là .png là lossless, trong khi .jpg thì không. Vì vậy, .png phù hợp hơn với hình ảnh nguồn, trong khi .jpg phù hợp hơn với xuất bản.
Không ai là

1
@Nobody PNG có thể mất hoặc mất. Tùy thuộc vào cách bạn xuất nó.
DA01

8
FYI, bạn hiếm khi sử dụng JPG cho nghệ thuật vẽ đường, như các ví dụ bạn sử dụng ở đây. Vì vậy, hoàn toàn dựa trên các ví dụ này, bạn sẽ không sử dụng JPG. Tuy nhiên, nếu đây là những bức ảnh, bạn sẽ nhận ra mình nhận được kết quả hoàn toàn khác.
DA01

7
Tôi thực sự không thể tin được câu hỏi này đã sống sót hơn 10 giây.
thường phục

2
@ DA01 PNG không bao giờ bị mất, nhưng bạn có thể thao tác một cách mất mát hình ảnh trước khi xuất nó thành PNG để làm cho nó nhỏ hơn. Đặc tả PNG biết các thông báo về điều này.
Không ai là

Câu trả lời:


35

Bởi vì chúng tốt hơn trong việc nén các bức ảnh có nhiều màu sắc và hình dạng không đều, như các bức ảnh.

Bạn đã thử cùng một epxeriment bạn đã làm, nhưng sau đó với một bức ảnh? .Png có lẽ sẽ lớn hơn đáng kể so với bất kỳ .jpg nào, bất kể yếu tố nén của .jpg.

Thí dụ:

hình ảnh png
ảnh .png, 110k

jpeg chất lượng 100
.jpg với chất lượng 100%, 63k

jpeg ở chất lượng 30
.jpg với chất lượng 30%, 9k

Nếu bạn nhìn kỹ, bạn sẽ thấy một số vật phẩm trên 30% chất lượng .jpg, nhưng điều đó chủ yếu là do cạnh cứng của bóng đèn so với nền màu xanh lá cây không phù hợp với thuật toán nén. Bạn có thể có những bức ảnh thông thường giảm đến 10 hoặc 5% chất lượng mà không mất bất kỳ sự mất mát nào mà bạn nhận thấy trong nháy mắt.


3
FWIW: Sau khi tối ưu hóa PNG, nó có 34 KB mà không có bất kỳ tổn thất nào có thể nhận ra.
Mario

Wow, tôi không bao giờ biết điều đó. Tôi đã thử chuyển đổi một bức ảnh tôi chụp thành PNG và nó đã tăng từ 550k lên 2933k. Bạn có biết những gì làm cho trường hợp đó?
JediBurrell

10
Nén @JediBurrell PNG luôn luôn không mất dữ liệu (AFAIK), trong khi nén của JPG cuối cùng sẽ làm giảm thông tin hình ảnh. Trong trường hợp của bạn, một hình ảnh đã được nén JPG mặc dù hình ảnh đẹp sẽ chứa các cạnh xung quanh mỗi nhóm (hình vuông nhỏ được nén tạo thành hình ảnh JPG) và PNG chọn các hình ảnh này để không bị mất. Do đó, PNG của bạn lớn hơn nhiều so với JPG gốc của bạn. Nén lại JPG bằng JPG sẽ khiến tình trạng này tệ hơn nhiều lần - hiệu ứng được gọi là "chặn meta".
Jay Versluis

2
@JediBurrell Nếu bạn quan tâm đến các chi tiết kỹ thuật và toán học, bạn có thể xem video này bằng Computerphile.
Paul Manta

2
"Nền màu xanh lá cây mịn không phù hợp với thuật toán nén": Ngược lại, độ dốc được thể hiện rất tốt bằng JPEG, trong khi các cạnh cứng không tạo ra các tạo tác gần đó. Đối với những người tò mò, hãy đọc về Fourier biến đổi tín hiệu vuông.
Lloeki

13

JPEG đã ủng hộ ngành công nghiệp nhiếp ảnh và có trước PNG khoảng nửa chục năm hoặc hơn, trong khi PNG được thiết kế để thay thế cho GIF, được CompuServe bảo vệ khá nhiệt tình. Mọi người đã bị kiện vì sử dụng GIF trên trang web của họ, ví dụ, đơn giản là vì họ không sử dụng chương trình được CompuServe cấp phép để tạo những hình ảnh đó.

Ngay từ đầu, JPEG đã được thiết kế để phục hồi một số không gian bằng cách làm cho các tệp nhỏ hơn, với chi phí chất lượng hoàn hảo pixel. Ngay cả cài đặt Q thành 100 cũng sẽ gây ra các hiện vật nhỏ, chủ yếu là vô hình - thiệt hại được thực hiện và mỗi lần bổ sung tệp được sửa đổi và lưu, sẽ có thêm thiệt hại. Tuy nhiên, trừ khi bạn làm như vậy nhiều lần, có lẽ bạn sẽ không bao giờ nhận thấy hiệu quả trừ khi bạn đi tìm nó.

PNG, mặt khác, là hoàn toàn không mất mát. Mỗi pixel được sao chép một cách trung thực mỗi lần, bất kể tập tin được sửa đổi và lưu bao nhiêu lần. Tuy nhiên, có giới hạn về mức độ bạn có thể nén dữ liệu mà không mất dữ liệu, mặc dù PNG sử dụng một số thủ thuật để đóng gói càng nhiều thông tin vào càng ít byte dữ liệu càng tốt. Một JPEG chất lượng cao có thể sẽ có cùng kích thước một PNG mà không cần tối ưu hóa hoặc thậm chí lớn hơn. Khi PNG bắt đầu tối ưu hóa, bằng cách sử dụng các bộ lọc hoặc điều chỉnh kích thước cửa sổ, tệp sẽ trở nên nhỏ hơn mà không bị mất, trong khi JPEG phải bắt đầu loại bỏ thông tin hình ảnh để theo kịp.

Vậy, tại sao JPEG được sử dụng? Rốt cuộc, nó thường kém hơn về độ trung thực và không gian lưu trữ. Lý do chính, tất nhiên, là nó là một tiêu chuẩn ngành và có sự hỗ trợ rất rộng. Hầu như mọi máy ảnh trên thế giới đều sử dụng RAW (theo nghĩa đen là dữ liệu thô) hoặc JPEG. Có các bộ xử lý dữ liệu phần cứng tích hợp trong các máy ảnh đó để nén dữ liệu JPEG nhanh nhất có thể, v.v.

Bạn sẽ thấy đây là cùng một lý do tại sao GIF vẫn ở mọi nơi. Hầu hết các phần mềm đều hỗ trợ GIF, trong khi PNG thích sự hỗ trợ ít hơn trong phần mềm cũ hơn (ví dụ: các phiên bản Internet Explorer cũ hơn yêu cầu một plugin để hiển thị các tệp PNG). Mặc dù nó có hỗ trợ màu sắc tệ hại, nhưng nó hỗ trợ hình ảnh động, một cái gì đó PNG không làm được (có một định dạng tệp có liên quan, APNG, chưa bao giờ hoàn toàn giống như cách PNG đã làm). GIF vẫn là nhà vô địch của hình ảnh hoạt hình, vì đây là định dạng tệp duy nhất có thể làm như vậy với sự hỗ trợ rộng rãi.

Chi phí để thay đổi từ JPEG sang PNG sẽ bị cấm từ một triển vọng phần cứng. Máy ảnh sẽ cần bộ xử lý mới được xây dựng để hỗ trợ nén PNG nhanh, vì chúng được mã hóa cứng để sử dụng JPEG ngay bây giờ. Máy ảnh cũ của bạn sẽ không có giá trị, vì bạn phải mua một chiếc mới với chip PNG tích hợp. Điều đó cũng có nghĩa là bạn phải thuyết phục một nhà sản xuất đi ngược lại các tiêu chuẩn công nghiệp và bắt đầu sản xuất các thiết bị đó, điều đó có nghĩa là phải có đủ nhu cầu để chứng minh điều đó, và những máy ảnh như vậy ban đầu sẽ đắt hơn so với dựa trên JPEG của họ đối tác. Rất khó để thay đổi một ngành công nghiệp.


PNG có khả năng mất mát. Phần mềm lưu có thể chọn để mất dữ liệu khó khăn cho định dạng có thể nén tốt hơn. Bản chất vavelet của jpeg làm cho nó không thể bị mất.
joojaa

@joojaa Bạn có thể sao lưu tuyên bố rằng nén PNG "có thể chọn để mất dữ liệu khó khăn" không?
CJ Dennis

@joojaa JPEG sử dụng nén DCT, không phải wavelet. Bạn có thể nghĩ về JPEG 2000.
bcrist

7
Theo hiểu biết của tôi thì việc giảm màu xảy ra trước khi hình ảnh được chuyển sang codec PNG. Chỉ vì một định dạng có khả năng lưu trữ dữ liệu đã bị mất không làm cho nó bị mất. Thay đổi RGB 32 bit với hình ảnh Alpha thành hình ảnh đen trắng 1 bit sẽ mất rất nhiều dữ liệu nhưng đó không phải là PNG đang làm điều đó. Giảm độ sâu màu là một sự chuyển đổi tổn hao, không mất dữ liệu nén .
CJ Dennis

2
Sai lầm của tôi DCT đó là. Quan điểm của tôi là trong khi PNG là lossless, không phải tất cả các trình tối ưu hóa PNG là! Do đó, không biết những gì bạn đã sử dụng, bạn không biết liệu quá trình này có bị mất hay không. Vì vậy, câu hỏi về sự phi phàm không đơn giản như người ta nghĩ. Giống như thay đổi độ sâu màu xảy ra trước khi lưu tối ưu hóa PNG có thể thay đổi hình ảnh theo những cách khác trước khi lưu, cho dấu chân nhỏ hơn. @JCDennis Những crunchers tồn tại chỉ cần xem hướng dẫn sử dụng của họ.
joojaa

7

Một cái gì đó không được đề cập rất chi tiết là cách các thuật toán nén này hoạt động. JPEG được nhắm mục tiêu trực tiếp vào các bức ảnh trong đó những thay đổi nhỏ về màu pixel không được chú ý. PNG được nhắm mục tiêu nhiều hơn cho các hình ảnh được chế tạo có chứa các vùng lớn của một màu trong đó nén được tận dụng tối đa như trong ví dụ của bạn về một bức ảnh toàn màu trắng khổng lồ với chữ đen đơn giản. Nếu bạn chụp cùng một bức ảnh và đặt nền trắng mờ dần từ trắng sang xám ngang từ bên này sang bên cạnh thì kích thước png sẽ tăng mạnh và jpg có thể sẽ có ít thay đổi. Tôi đã thực hiện một số mã hóa khoảng 10 năm trước trực tiếp với cả hai định dạng này để giải nén các loại tệp này thành bmps. JPEG rất phức tạp và phức tạp. PNG rất đơn giản và chỉ thực sự hiệu quả đối với một số hình ảnh nhất định trong đó màu sắc không thay đổi theo hàng ngang


1
Bạn đã thực sự thử điều này? PNG không chỉ đơn giản là chạy mã hóa chiều dài và phức tạp hơn nhiều so với bạn đề xuất. Nó sử dụng một thuật toán thích ứng và sẽ nén hiệu quả cả các khu vực rắn và các mẫu lặp lại.
z7sg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.