WebP là một định dạng ảnh được Google phát hành để giúp trang web nhẹ hơn. Chế độ mất dữ liệu (lossy) của nó được xây dựng từ các kỹ thuật ảnh tĩnh bên trong VP8, một định dạng nén video, dựa trên lý do rằng một bức ảnh về cơ bản là một khung hình video đơn lẻ; chế độ không mất dữ liệu (lossless), hỗ trợ trong suốt và ảnh động được bổ sung không lâu sau bản phát hành đầu tiên. Mục đích của WebP là độ bao phủ: một định dạng được tạo ra để đảm nhiệm vai trò của JPG, PNG và GIF động, và thực hiện từng việc đó với ít byte hơn. Tất cả các trình duyệt phổ biến hiện nay đều hiển thị được WebP, đó là lý do hình ảnh lưu từ các trang web hiện đại thường có dạng tệp .webp.
Cách WebP lưu trữ hình ảnh
Một tệp WebP là một vùng chứa được ghép từ các khối (chunk) có nhãn, và nội dung bên trong quyết định cách tệp hoạt động, vì có hai bộ máy nén hoàn toàn khác nhau:
- WebP mất dữ liệu (Lossy WebP) hoạt động giống như một khung hình khóa trong video. Nó dự đoán mỗi khối điểm ảnh từ các điểm ảnh lân cận, chỉ giữ phần chênh lệch, chuyển phần chênh lệch đó thành các giá trị tần số và làm tròn chúng. Thông tin bị loại bỏ, vì vậy một WebP mất dữ liệu không thể khôi phục lại các điểm ảnh gốc, và việc lưu đi lưu lại nhiều lần sẽ tích lũy thêm hư hại, giống hệt như với JPG.
- WebP không mất dữ liệu (Lossless WebP) là một phương pháp hoàn toàn khác. Nó tìm các mẫu lặp lại và các màu lặp lại trên toàn bộ ảnh, giữ một bộ nhớ đệm nhỏ các màu vừa dùng gần đây và mã hóa kết quả một cách cô đọng. Không có thông tin nào bị loại bỏ, nên nó cạnh tranh với PNG chứ không phải với JPG.
Cả hai chế độ đều có thể chứa một kênh alpha đầy đủ, nên hỗ trợ được độ trong suốt một phần, và phần trong suốt có thể được lưu không mất dữ liệu trong khi phần màu bị mất dữ liệu, một kết hợp mà cả JPG lẫn PNG đều không cung cấp. Ảnh động là một chuỗi khung hình trong cùng một vùng chứa, mỗi khung có thời gian riêng và đủ màu, loại bỏ giới hạn 256 màu của GIF. Có một giới hạn cứng đáng lưu ý: một WebP không thể lớn hơn 16383 pixel theo bất kỳ chiều nào, nên các bản scan rất lớn và ảnh toàn cảnh cực dài sẽ không thể phù hợp.
Những siêu dữ liệu mà WebP chứa
WebP không tự nghĩ ra một hệ thống siêu dữ liệu riêng. Siêu dữ liệu là thông tin mô tả được lưu bên cạnh các điểm ảnh, và vùng chứa WebP giữ chúng trong các khối tùy chọn mang theo những chuẩn hiện có. Báo cáo sẽ hiển thị bất cứ chuẩn nào có mặt:
- Một khối EXIF, chứa cùng khối thông tin máy ảnh mà bạn thấy trong JPG:
Make,Model,DateTimeOriginal,ExposureTime,FNumber,ISOSpeedRatings,FocalLength,LensModelvàOrientation, cùng nhóm GPS với vĩ độ, kinh độ và độ cao. - Một khối XMP, chứa siêu dữ liệu XML của Adobe: người tạo, tiêu đề, mô tả, từ khóa, đánh giá, tuyên bố quyền và lịch sử chỉnh sửa.
- Một khối hồ sơ ICC mô tả không gian màu mà các con số thuộc về.
Không có chỗ cho IPTC, chuẩn xuất bản cũ hơn, nên các trường IPTC chỉ được giữ lại sau khi chuyển sang WebP nếu bộ chuyển đổi ghi lại chúng dưới dạng XMP.
Điều cần chú ý trên thực tế là một tệp WebP thường hoàn toàn trống trơn. Các bộ mã hóa dòng lệnh và phía máy chủ sẽ loại bỏ siêu dữ liệu trừ khi được yêu cầu rõ ràng phải giữ lại, và hình ảnh được website xử lý tự động thường xuất ra mà không kèm theo gì cả. Tuy nhiên điều đó không phải lúc nào cũng đúng. Một WebP được tạo từ ảnh chụp điện thoại bằng một bộ chuyển đổi giữ siêu dữ liệu sẽ mang nguyên trạng model máy ảnh gốc, thời gian chụp và tọa độ GPS. Nếu tệp quan trọng, hãy đọc báo cáo thay vì mặc định cho rằng quá trình chuyển đổi đã xóa sạch mọi dữ liệu.
Khi nào nên dùng WebP
Hãy dùng WebP cho hình ảnh trên website, đúng với mục đích nó được thiết kế: ít byte hơn cho cùng một bức ảnh, hỗ trợ trong suốt, ảnh chụp và ảnh động ngắn chỉ với một định dạng. WebP mất dữ liệu thay thế cho JPG, WebP không mất dữ liệu thay thế cho PNG cho đồ họa phẳng, và WebP động thay thế GIF động với màu sắc tốt hơn nhiều.
Ngoài trình duyệt, đây là lựa chọn kém linh hoạt hơn. Ứng dụng máy tính, quy trình in ấn, phần mềm văn phòng và thiết bị cũ có thể không mở được WebP, nên gửi WebP qua email hoặc cho nhà in thường khá bất tiện, và JPG cùng PNG vẫn là lựa chọn an toàn trong các trường hợp đó. Chuyển một JPG sẵn có sang WebP mất dữ liệu cũng đồng nghĩa mã hóa lại một ảnh vốn đã bị mất chi tiết một lần, nên lần nén thứ hai sẽ làm giảm chất lượng thêm so với lần đầu. Hãy chuyển đổi từ bản gốc tốt nhất bạn có, không phải từ tệp đã được gửi cho bạn trước đó.