Vì sao ảnh chụp màn hình của bạn nặng 2 MB, và cách giảm 60–90%
Dov Azencot
@DovAzencotCó lần tôi đếm số ảnh chụp màn hình trong một chuỗi email duyệt thiết kế. Mười một tấm, đều PNG, trung bình mỗi tấm nhỉnh dưới 2 MB. Hơn hai mươi megabyte những bảng điều khiển gần như trắng trơn, bay qua bay lại giữa sáu người mà ai cũng đang mở đúng ứng dụng đó ở một tab khác. Chẳng ai bận tâm, vì nó "vẫn chạy". Đó là cái bẫy. Ảnh chụp màn hình lặng lẽ to khủng khiếp, và lý do nằm ngay trong cách máy tính của bạn chụp chúng.
Vì sao một ảnh chụp màn hình là tệp 2 MB
Khi bạn bấm phím tắt chụp màn hình, hệ điều hành lưu một PNG. Đó là một mặc định hợp lý — PNG không mất dữ liệu, nên bản chụp chính xác từng pixel, và với một ảnh chụp đầy chữ sắc nét thì đó thật sự là bản năng đúng. Vấn đề là PNG làm gì với dung lượng.
PNG lưu mọi pixel một cách chính xác. Màn hình hiện đại thì dày đặc — một bản chụp toàn cửa sổ trên màn hình Retina hay 4K có thể rộng hơn 2.000 pixel, và PNG trung thành ghi lại từng pixel trong hàng triệu pixel đó với độ trung thực đầy đủ. Nó chẳng đoái hoài rằng 60% khung hình cùng một sắc gần trắng. Nó không vứt đi thứ gì, vì vứt đi không phải việc nó làm. Thế nên một ảnh chụp trang cài đặt gần như trống — về mặt nhìn thì gần như chẳng có gì — vẫn nặng 1,5 đến 2,5 MB, vì khung vẽ thì khổng lồ ngay cả khi nội dung thưa thớt.
Nước đi: chuyển sang WebP
WebP làm được điều PNG không thể — nén có mất dữ liệu mà vẫn giữ cạnh sắc và độ trong suốt. Với ảnh chụp màn hình nói riêng, sự kết hợp đó gần như phép màu, vì một ảnh chụp chủ yếu là các vùng phẳng (rẻ để nén) với một chút chữ (mà WebP giữ sắc). Lần nén mất dữ liệu vứt bỏ phần nhiễu không cảm nhận được; mắt bạn không bao giờ nộp đơn phàn nàn.
Con số thật từ những ảnh chụp trên chính ổ đĩa của tôi:
| Ảnh chụp màn hình | Dưới dạng PNG | Dưới dạng WebP |
|---|---|---|
| Trang cài đặt, chủ yếu màu trắng | 1.6 MB | ~180 KB |
| Bảng phân tích đầy đủ | 2.4 MB | ~310 KB |
| Trình soạn mã chế độ tối | 1.9 MB | ~240 KB |
Đó là chừng 85–90% được cắt đi, và khi đặt cạnh nhau tôi không phân biệt nổi cái nào với cái nào. Chữ vẫn đọc rõ tới từng pixel. Đây là lần chuyển đổi cho lợi cao nhất mà tôi làm, đúng bởi ảnh chụp màn hình vốn thừa cân dữ dội ngay từ đầu — có cả một khối lượng khổng lồ những-cái-chẳng-là-gì để vắt ra.
"Chữ có bị mờ không?"
Đây là nỗi sợ, và là một nỗi sợ chính đáng, vì bạn hẳn từng thấy một ảnh chụp JPG với chữ nhòe có quầng rồi mặc định mọi định dạng mất dữ liệu đều làm vậy. WebP xử lý cạnh giỏi hơn JPG — giỏi hơn rõ rệt. Ở một mức chất lượng hợp lý, chữ trên một ảnh chụp WebP vẫn sắc. Tôi từng phóng to lên 400% để săn vết lỗi quanh nét chữ và về tay không với những bản chụp giao diện thông thường.
Ngoại lệ thành thật: nếu bạn hạ chất lượng xuống thật mạnh để đuổi theo một tệp tí hon, cuối cùng bạn sẽ thấy chữ mềm đi. Cách chữa là đừng làm thế. Một mức chất lượng vừa phải đã cho bạn thắng lợi 60–90% mà chữ vẫn nguyên. Chẳng có lý do gì để đẩy vào cái khoảng nơi nó gãy.
Khi thu nhỏ chẳng giúp ích
Hai trường hợp tôi để yên PNG.
Nếu ảnh chụp sắp quay lại một công cụ thiết kế để được ghi chú, chú thích hay ghép lớp, tôi giữ nó không mất dữ liệu. Lần nén mất dữ liệu của WebP là cánh cửa một chiều, và tôi không muốn in sẵn phần nén vào thứ mình sắp chỉnh sửa rồi xuất lại. Gửi bản WebP, giữ bản gốc PNG — cùng một quy tắc như luôn luôn.
Và nếu một ảnh chụp vốn đã nhỏ — một mẩu cắt tí hon, một nút bấm đơn lẻ, thứ gì đó đã dưới tầm 100 KB — thì chuyển đổi gần như chẳng nhích được cây kim. Thắng lợi 60–90% đến từ những tệp khổng lồ vì khung vẽ khổng lồ. Một mẩu cắt nhỏ đã giải quyết xong vấn đề đó rồi. Đừng thêm một bước cho không.
Tôi thật sự làm thế nào
Tôi cho ảnh chụp màn hình chạy qua công cụ chuyển PNG sang WebP trên website này trước khi chúng đến gần bất cứ email hay tài liệu nào. Việc đó diễn ra trong trình duyệt của bạn, nên bản chụp — mà nói thật, thường phơi ra nửa màn hình và bất cứ thứ gì đang ở phía sau — không hề rời khỏi thiết bị. Thả PNG vào, nhìn cột dung lượng sụp xuống, tải WebP về, đính kèm cái đó thay vì cái kia.
Điều lớn hơn không phải công cụ, mà là phản xạ. Một khi "chụp màn hình, rồi thu nhỏ" thành tự động, bạn thôi bắn những ảnh 2 MB vào những người vốn đã mở sẵn ứng dụng, email của bạn gửi nhanh hơn, và các chuỗi thư thôi phình lên hàng chục megabyte. Cái email mười một ảnh chụp đó lẽ ra chỉ tổng cộng chừng 2 MB thay vì hơn hai mươi. Cùng những bức hình. Cùng mọi thứ. Chỉ là không còn khối lượng chết.
Bài viết liên quan
Vì sao tôi chuyển PNG sang WebP (và một lần duy nhất tôi không làm thế)
PNG là định dạng tuyệt vời để chỉnh sửa nhưng lãng phí để đăng lên. Đây là những gì WebP thật sự tiết kiệm cho bạn, chỗ nó chẳng giúp gì, và một quy tắc tôi không bao giờ phá.
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.
SVG sang PNG — khi bạn thật sự cần pixel (và khi thì không nên)
Một SVG phóng to vô hạn mà vẫn tí hon, nên biến nó thành điểm ảnh nghe như một bước lùi. Đôi khi đúng thế. Đây là khi bạn thật sự cần pixel PNG từ một vector, và khi nên để yên SVG.
Tất cả bài viết