Tìm hiểu ảnh base64

Gọi là ảnh base64 vì những pixel value của ảnh đã convert từ 8bit sang 6bit. 6 bit thì có 64 giá trị, do đó gọi là ảnh base64. Base64 là phương thức mã hóa, do đó có thể sử dụng với video, nhạc hay bất cứ file gì.

Ảnh base64 được sử dụng trong vài trường hợp như truyền/nhận ảnh từ các chương trình khác nhau. Bản chất của ảnh base64 là 1 đoạn text có giá trị từ A-Z, a-z, 0-1, ký tự + với ký tự /. Do đó việc gửi ảnh đi giống như gửi 1 chuỗi text đơn thuần. Khi mã hóa & giải mã cũng nhanh, phù hợp cho các ứng dụng cần sự đơn giản trong giao thức truyền nhận.

Và do ảnh base64 chỉ là text nên có thể nhúng thẳng vào source code HTML.

Bản thân mình sử dụng ảnh base64 để tránh việc ảnh gửi đi không đọc được. Thường là gửi từ hệ điều hành này sang hệ điều hành khác, như Android qua Windows chẳng hạn.

Thuật toán mã hóa ảnh thành ảnh base64

Các giá trị từ 0 đến 64 tương ứng với các ký tự alphabet thống thường:
A-Z là từ 0 đến 25
a-z là từ 26 đến 51
0-9 là từ 52 đến 61
Dấu + là giá trị 62
Dấu / là giá trị 63

Như vậy thuật toán chuyển sang base64 sẽ đọc nội dung file binary, cứ gom cụm 6bit thành 1 nhóm rồi chuyển thành giá trị tương ứng. Kết quả là chuỗi text với các ký tự ở trên.

Và thuật toán giải mã đơn giản là làm ngược lại, cứ lấy các ký tự ghi lại thành nhị phân sẽ được ảnh ban đầu.

Làm sao kiểm tra ảnh base64 hợp lệ?

Dựa theo thuật toán trên thì ảnh hay file base64 có các tính chất sau:
– Không được rỗng (tất nhiên)
– Chỉ chứa 64 ký tự quy định
– Số lượng ký tự (hay là chiều dài chuỗi) phải chia hết cho 4

Như vậy có thể viết hàm kiểm tra đơn giản như sau (C#)

Bước này nhằm kiểm tra ảnh base64 có hợp lệ hay không. Còn giải mã được hay không thì phải convert từng byte mới biết được.

Các trang web encode/decode base64

Các trang web bên dưới giúp bạn chuyển đổi ảnh hoặc text sang dạng base64.
Encode image: https://www.base64-image.de/
Encode text: https://www.base64encode.org/

Để nhúng vào file html, bạn chỉ cần truyền ảnh base64 vào tham số src của tag là được. Ví dụ như file soc_chuot.html

Code mã hóa/giải mã base64 C++

Code mã hóa/giải mã base64 C#

C# có sẵn hàm convert nên không cần viết lại, chỉ cần gọi ra sử dụng

Leave a Reply