Vì sao tôi chuyển PNG sang WebP (và một lần duy nhất tôi không làm thế)
Dov Azencot
@DovAzencotTrên màn hình nền của tôi có một thư mục tên to-shrink. Suốt nhiều năm, đó là nơi ảnh chụp màn hình đi vào để chết dần — những PNG 2 MB chụp bảng điều khiển và các bản thiết kế dang dở mà tôi gửi email cho những người hoàn toàn không cần tới 2 MB màn hình của tôi. Một buổi chiều nọ tôi thật sự mở thư mục ấy ra và làm phép tính: nó nặng hơn cả ứng dụng tôi vừa phát hành trong cùng tuần đó. Đó chính là điều lặng lẽ ở PNG. Nó là một định dạng tuyệt vời mà lại ngốn một lượng dung lượng đến kinh ngạc, và hầu hết chúng ta chẳng bao giờ để ý, vì băng thông thì rẻ còn tệp thì "vẫn mở bình thường".
Vậy để tôi trình bày cái lập luận mà tôi ước ai đó đã nói với mình sớm hơn nhiều. Nếu một PNG đang trên đường tới một website — bất cứ nơi nào nó sẽ được ngắm nhìn chứ không phải chỉnh sửa — thì gần như chắc chắn nó nên là một WebP thay vì thế.
PNG thật sự giỏi ở điểm gì
PNG không mất dữ liệu. Mỗi pixel bạn đưa vào đều trở ra y hệt, chính xác, mọi lần. Đó là một ưu điểm thật — cho một tệp gốc. Đó là lý do công cụ thiết kế của bạn xuất PNG, ảnh chụp màn hình là PNG, và bất cứ thứ gì có cạnh sắc cùng độ trong suốt đều tìm đến nó. Không mất dữ liệu nghĩa là bạn có thể mở ra, chỉnh và lưu lại một trăm lần mà chẳng có gì xuống cấp.
Điều oái oăm là "lưu hoàn hảo từng pixel" là một lời hứa mà bạn phải trả giá bằng byte. Lưu một tấm ảnh chụp thành PNG và nó trung thành ghi lại các dải chuyển màu, nhiễu cảm biến và những thay đổi màu tinh tế mà mắt bạn sẽ chẳng bao giờ nhận ra nếu chúng chỉ được ước lượng gần đúng. Bạn đang trả giá đầy đủ cho những chi tiết chẳng ai nhìn thấy.
WebP làm được gì mà PNG không thể
WebP là câu trả lời của Google cho một câu hỏi đơn giản: nếu ta cứ làm ra một định dạng tốt hơn thì sao? Nó làm hai việc mà PNG không thể. Nó có thể nén mất dữ liệu khi bạn muốn — vứt bỏ những thứ mắt không cảm nhận được theo cách JPEG làm, nhưng khôn khéo hơn — và trong lúc đó vẫn giữ trọn kênh alpha. Chính phần thứ hai này mới là điều kỳ diệu lặng lẽ. Nhiều năm liền, cái đánh đổi là "độ trong suốt hoặc tệp nhỏ, chọn một". WebP cho cả hai cùng lúc.
Trên thực tế, chuyển một PNG dạng ảnh chụp hay nhiều ảnh chụp màn hình ở mức chất lượng hợp lý sẽ rơi vào khoảng nhẹ hơn 60% đến 90%. Không phải 10%. Một ảnh chụp màn hình 1,8 MB thành khoảng 250 KB, và đặt cạnh nhau bạn không thể phân biệt cái nào với cái nào. Tôi đã tự thử nghiệm điều đó nhiều lần hơn mức muốn thừa nhận, lần nào cũng chắc mẩm sẽ bắt thóp được WebP. Chưa lần nào bắt được.
Bảng so sánh khiến tôi tin
Những con số áng chừng từ một loạt tệp tôi chuyển tháng trước:
| PNG nguồn | Sang WebP |
|---|---|
| Ảnh chụp màn hình giao diện — 1.8 MB | ~240 KB |
| Ảnh bìa — 3.1 MB | ~380 KB |
| Logo phẳng hai màu — 42 KB | ~30 KB |
Nhìn vào cái logo. Nó gần như không nhúc nhích — và chính cái chú thích đó mới là điều quan trọng.
Khi nào tôi không buồn chuyển đổi
Đồ họa đơn giản — màu phẳng, chỉ vài màu, cạnh sắc — đúng là thứ PNG sinh ra để nén, và nó làm việc đó tốt chẳng kém gì. Một biểu tượng hai màu, một sơ đồ nét kẻ, một mã QR: cứ để chúng ở PNG, hay tốt hơn nữa hãy đăng dưới dạng SVG nếu bạn có bản vector. WebP sẽ không hại các tệp này, nhưng cũng chẳng giúp được gì đáng kể, còn bạn thì thêm một bước cho không.
Lần còn lại tôi không chuyển đổi là với tệp gốc. Tôi không bao giờ đụng tới bản duy nhất của bất cứ thứ gì. Chế độ mất dữ liệu của WebP là cánh cửa một chiều: chi tiết bạn vứt đi thì không lấy lại được. Nên đây là quy tắc duy nhất tôi không bao giờ phá — hãy chuyển bản bạn đăng lên, giữ bản gốc ở nơi bạn chỉnh sửa. Trên máy tôi đó đúng nghĩa là hai tệp: PNG ở lại trong thư mục dự án, WebP đi lên website. Một khoản bảo hiểm rẻ tiền, và tôi chưa một lần hối tiếc.
"Nhưng nó có thật sự chạy được ở mọi nơi không?"
Đây từng là lời phản bác thật sự, mà giờ thì không còn nữa. Mọi trình duyệt người ta thật sự dùng đều đã hỗ trợ WebP từ khoảng năm 2020 — Chrome, Safari, Firefox, Edge, tất cả. Ứng dụng email thì vẫn hên xui, và vài phần mềm doanh nghiệp cũ vẫn kỳ cục với nó, nên với một bản tin thì tôi vẫn chọn JPEG. Nhưng với web mở? Phục vụ WebP mà không cần bản dự phòng đã thôi là một lựa chọn dũng cảm từ nhiều năm trước.
Tôi sẽ thật sự làm thế nào
Thành thật mà nói, tôi dựng công cụ chuyển PNG sang WebP trên website này vì tôi phát chán việc kéo ảnh chụp màn hình vào những công cụ web vu vơ để thu nhỏ chúng, chẳng bao giờ chắc chắn tệp của mình cuối cùng nằm ở đâu. Nên phiên bản tôi khuyên dùng là phiên bản nhàm chán và riêng tư: chuyển đổi ngay trên máy của bạn, trong trình duyệt, nơi tệp không hề rời khỏi thiết bị. Thả PNG vào, nhìn cột dung lượng tụt xuống, tải WebP về.
Nhưng công cụ không phải là điều cốt lõi. Cốt lõi là thói quen. Một khi "PNG để chỉnh sửa, WebP để đăng lên" trở thành phản xạ, bạn thôi gửi cho người khác những ảnh chụp màn hình 2 MB, các trang của bạn nhanh hơn miễn phí, và cái thư mục to-shrink trên màn hình nền cuối cùng vẫn trống. Của tôi trống — đã khoảng một năm rồi. Một chiến thắng nhỏ, nhưng tôi vẫn nhận.
Bài viết liên quan
Vì sao ảnh chụp màn hình của bạn nặng 2 MB, và cách giảm 60–90%
Một ảnh chụp bảng điều khiển gần như trống trơn chẳng có lý do gì để nặng 2 MB. Đây là lý do PNG làm thế với bạn, và cách chuyển sang WebP cắt 60–90% mà không mất gì nhìn thấy.
AVIF hay WebP — tệp nhỏ hơn không phải lúc nào cũng đúng
AVIF thường thắng WebP về dung lượng, đôi khi hơn 20%. Đây là cái giá phần nén dôi ra bắt bạn trả bằng thời gian mã hóa và những ca hy hữu, và khi nào tôi vẫn chọn WebP.
PNG hay JPG? Quy tắc mười năm tôi dùng để quyết
Không mất dữ liệu so với mất dữ liệu, cạnh sắc so với ảnh chụp, trong suốt so với không. Một câu hỏi đơn giản cho bạn biết tệp nên là định dạng nào — kèm bảng dung lượng thật để chứng minh.
Tất cả bài viết