Chuyển đổi Base64 sang WebP

Lưu ảnh WebP mã hóa Base64 thành tệp, hoặc biến dữ liệu PNG và JPEG dạng Base64 thành WebP, một định dạng hiện đại thường nhỏ hơn mà chất lượng hiển thị vẫn tương đương.

Chạy hoàn toàn trong trình duyệt của bạn. Không có gì được tải lên.

Cách sử dụng

  1. Dán chuỗi Base64 hoặc URI data:image/webp;base64. Các định dạng ảnh khác cũng dùng được.
  2. Kiểm tra bản xem trước, định dạng phát hiện được và dung lượng sau giải mã.
  3. Giữ WebP ở mục Tải xuống dạng để chuyển đổi, hoặc chọn Bản gốc để lưu đúng các byte đã giải mã.
  4. Tải xuống tệp .webp và so sánh dung lượng với tệp nguồn.

Nhận dạng dữ liệu WebP

WebP được lưu trong container RIFF, cùng lớp bọc mà âm thanh WAV sử dụng. Tệp bắt đầu bằng chuỗi ASCII RIFF, nên Base64 của nó bắt đầu bằng UklGR; vài byte sau đó, dấu hiệu WEBP xác nhận container chứa ảnh chứ không phải âm thanh. Bên trong, ảnh có thể ở dạng nén mất dữ liệu (VP8), không mất dữ liệu (VP8L) hoặc tệp mở rộng (VP8X) bổ sung độ trong suốt, ảnh động hoặc siêu dữ liệu. Kiểu MIME là image/webp.

Vì sao nên chuyển sang WebP

Theo số liệu đo của Google, tệp WebP nén mất dữ liệu nhỏ hơn khoảng 25 đến 34 phần trăm so với JPEG có chất lượng tương đương, còn WebP không mất dữ liệu nhỏ hơn PNG khoảng 26 phần trăm. Khác với JPEG, WebP giữ được kênh alpha, nên logo và sticker trong suốt được chuyển đổi gọn gàng. Mọi trình duyệt lớn hiện nay đều hiển thị được WebP.

Tệp nhỏ hơn có lợi gấp đôi khi ảnh được nhúng trực tiếp: ảnh nhẹ hơn cũng đồng nghĩa với chuỗi Base64 ngắn hơn trong HTML, CSS hoặc JSON của bạn. Sau khi chuyển đổi, bạn có thể mã hóa lại tệp mới bằng WebP sang Base64.

Kết quả không phải lúc nào cũng nhỏ hơn. Biểu tượng rất nhỏ, ảnh chụp đã được nén tốt và đồ họa phẳng ít màu đôi khi lại lớn hơn, khi đó PNG hoặc JPG là lựa chọn tốt hơn. Chuyển đổi tại đây cũng là cách nhanh để thử xem một ảnh cụ thể sẽ giảm được bao nhiêu trước khi bạn thay đổi quy trình build: dán một PNG hoặc JPEG dạng Base64, tải xuống WebP và so sánh hai dung lượng.

Chuyển đổi bằng Pillow

Với các tác vụ hàng loạt trên máy chủ, cùng phép chuyển đổi này chỉ cần vài dòng Python với thư viện Pillow:

import base64, io
from PIL import Image

img = Image.open(io.BytesIO(base64.b64decode(b64_string)))
img.save('output.webp', 'WEBP', quality=80)

Câu hỏi thường gặp

WebP có giữ được độ trong suốt không?

Có. WebP hỗ trợ kênh alpha đầy đủ ở cả chế độ nén mất dữ liệu lẫn không mất dữ liệu, nên các vùng trong suốt vẫn trong suốt sau khi chuyển đổi.

Tôi có giữ được WebP động không?

Hãy tải xuống dạng Bản gốc để giữ mọi khung hình. Việc chuyển đổi đi qua canvas, vốn chỉ ghi lại được một khung hình tĩnh duy nhất.

Đầu ra WebP có luôn nhỏ hơn đầu vào không?

Không. Ảnh chụp lớn và ảnh chụp màn hình thường nhỏ đi, nhưng ảnh nhỏ hoặc đã được tối ưu kỹ có thể lớn lên. Hãy so sánh dung lượng sau giải mã mà công cụ hiển thị với dung lượng của tệp đã tải xuống.

Một số phần mềm không mở được tệp WebP của tôi. Tôi nên làm gì?

Các trình xem ảnh và chương trình văn phòng cũ có thể không hỗ trợ WebP. Hãy dán cùng chuỗi Base64 đó và tải xuống dạng PNG hoặc JPG.