Các cuộc tranh luận về định dạng thường bắt đầu từ codec rồi mới suy ra công dụng. Ngược rồi. Định dạng đúng được quyết định bởi thứ có trong bức ảnh, sau đó mới đến chuyện hệ thống nhận ảnh chấp nhận những gì.
Ảnh chụp: JPEG hoặc WebP
Ảnh có tông màu liên tục — khuôn mặt, phong cảnh, bất cứ thứ gì nhiều chuyển sắc và nhiễu — nén rất tốt bằng các codec có mất dữ liệu, vì mắt người dễ bỏ qua sai lệch nhỏ ở những vùng nhiều chi tiết. JPEG là lựa chọn mặc định an toàn vì chỗ nào cũng nhận. WebP có mất dữ liệu đạt cùng mức chất lượng cảm nhận với số byte ít hơn thấy rõ, nên nơi nào cho phép thì nó thắng.
Có một lưu ý nếu bạn dùng ToolZool cho việc này: bộ nén của chúng tôi chỉ ghi WebP ở chế độ không mất dữ liệu, mà với một tấm ảnh chụp thì chế độ đó cho ra tệp lớn gấp mấy lần bản JPEG. Vậy nên với ảnh chụp có giới hạn dung lượng, hãy chọn JPEG. Lý do của khoảng cách đó nằm ngay trên trang của bộ nén — không có bộ mã hóa WebP có mất dữ liệu nào chúng tôi đưa lên được mà không vướng giấy phép xung khắc hoặc một chuỗi công cụ C.
Đồ họa phẳng và chữ: PNG
Logo, biểu tượng, sơ đồ và ảnh chụp màn hình giao diện được tạo nên từ các đường biên sắc nét và những mảng màu lớn giống hệt nhau. Codec có mất dữ liệu xử lý biên sắc rất tệ: quanh chữ sẽ hiện viền nhòe, và vì chính cái nhiễu nó tạo ra lại tốn byte để mã hóa, tệp cuối cùng thường lớn hơn một tệp PNG không mất dữ liệu của cùng ảnh đó.
Nền trong suốt quyết định thay bạn
JPEG không có kênh alpha. Chuyển một tệp PNG nền trong sang JPEG thì phần trong suốt sẽ thành màu đặc — thường là đen, đôi khi trắng, hiếm khi là thứ bạn muốn. PNG và WebP đều hỗ trợ alpha, nên nếu ảnh có nền trong thì danh sách rút gọn chỉ còn hai cái đó.
AVIF đứng ở đâu
Ở cùng mức chất lượng, AVIF cho tệp nhỏ hơn WebP, nhất là ở bitrate thấp, và mọi trình duyệt hiện nay đều hiển thị được. Vấn đề nằm ở khâu mã hóa: nó chậm hơn hẳn và nặng hơn nhiều so với JPEG hay WebP, điều đó đáng kể khi việc mã hóa diễn ra trên điện thoại chứ không phải trên máy chủ build.
Hiện ToolZool không đọc mà cũng không ghi AVIF. Cả hai chiều đều cần một codec AV1, và mọi codec còn được bảo trì đều là thư viện C không build được cho WebAssembly — nên tệp AVIF phải được chuyển đổi bằng thứ khác trước. HEIC, định dạng mà phần lớn iPhone tạo ra theo mặc định, cũng vậy.
Câu hỏi đứng trên tất cả những điều trên
Biểu mẫu chấp nhận định dạng nào? Một định dạng tốt hơn nhưng bị từ chối thì không tốt hơn. Hãy đọc danh sách định dạng được chấp nhận trước, rồi mới tối ưu bên trong danh sách đó — và nếu một tệp trông đủ điều kiện mà vẫn bị chối, bài vì sao biểu mẫu tải lên cứ từ chối tệp của bạn đi qua bốn phép kiểm tra mà biểu mẫu thực sự chạy. Nếu bạn cần chuyển qua lại giữa các định dạng, bộ nén ảnh đọc JPG, PNG và WebP rồi ghi ra JPEG, PNG hoặc WebP không mất dữ liệu, nên nó kiêm luôn vai trò công cụ chuyển đổi trong nhóm đó.

