Nếu tôi chuyển đổi một hình ảnh (jpg hoặc png) sang base64, thì nó sẽ lớn hơn hay nó sẽ có cùng kích thước? Nó sẽ lớn hơn bao nhiêu?
Có nên sử dụng hình ảnh được mã hóa base64 trên trang web của tôi không?
Nếu tôi chuyển đổi một hình ảnh (jpg hoặc png) sang base64, thì nó sẽ lớn hơn hay nó sẽ có cùng kích thước? Nó sẽ lớn hơn bao nhiêu?
Có nên sử dụng hình ảnh được mã hóa base64 trên trang web của tôi không?
Câu trả lời:
Nó sẽ lớn hơn khoảng 37%:
Rất đại khái, kích thước cuối cùng của dữ liệu nhị phân được mã hóa Base64 bằng 1,37 lần kích thước dữ liệu gốc
Dưới đây là tổng quan thực sự hữu ích về thời điểm mã hóa base64 và khi nào không nên của David Calhoun.
Các tệp được mã hóa base64 cơ bản answer = gzipped sẽ tương đương về kích thước tệp với tệp nhị phân tiêu chuẩn (jpg / png). Các tệp nhị phân Gzip'd sẽ có kích thước tệp nhỏ hơn.
Takeaway = Có một số lợi thế để mã hóa và gzipping các biểu tượng giao diện người dùng của bạn, v.v., nhưng không khôn ngoan khi làm điều này cho hình ảnh lớn hơn.
Nó sẽ lớn hơn trong base64.
Base64 sử dụng 6 bit mỗi byte để mã hóa dữ liệu, trong khi hệ nhị phân sử dụng 8 bit mỗi byte. Ngoài ra, có một chút chi phí đệm với Base64. Không phải tất cả các bit đều được sử dụng với Base64 vì nó được phát triển ngay từ đầu để mã hóa dữ liệu nhị phân trên các hệ thống chỉ có thể xử lý chính xác dữ liệu phi nhị phân.
Điều đó có nghĩa là hình ảnh được mã hóa sẽ lớn hơn khoảng 25%, cộng với chi phí không đổi cho phần đệm.
Mã hóa hình ảnh thành base64 sẽ làm cho hình ảnh lớn hơn khoảng 30%.
Xem chi tiết trong bài viết wikipedia về lược đồ URI dữ liệu , trong đó nó nêu rõ:
URI dữ liệu được mã hóa Base64 có kích thước lớn hơn 1/3 so với kích thước tương đương nhị phân của chúng. (Tuy nhiên, chi phí này giảm xuống còn 2-3% nếu máy chủ HTTP nén phản hồi bằng gzip)
Câu trả lời là: Nó phụ thuộc.
Mặc dù base64-hình ảnh lớn hơn, nhưng có một vài điều kiện mà base64 là lựa chọn tốt hơn.
Kích thước của base64-hình ảnh
Base64 sử dụng 64 ký tự khác nhau và đây là 2 ^ 6. Vì vậy, base64 lưu trữ 6 bit trên mỗi ký tự 8 bit. Vì vậy, tỷ lệ là 6/8 từ dữ liệu chưa được chuyển đổi sang dữ liệu cơ sở64. Đây không phải là tính toán chính xác, nhưng là một ước tính sơ bộ.
Thí dụ:
Một hình ảnh 48kb cần khoảng 64kb dưới dạng hình ảnh được chuyển đổi base64.
Phép tính: (48/6) * 8 = 64
Máy tính CLI đơn giản trên hệ thống Linux:
$ cat /dev/urandom|head -c 48000|base64|wc -c
64843
Hoặc sử dụng một hình ảnh:
$ cat my.png|base64|wc -c
Base64-hình ảnh và trang web
Câu hỏi này khó trả lời hơn nhiều. Nói chung, hình ảnh càng lớn càng ít cảm giác khi sử dụng base64. Nhưng hãy xem xét các điểm sau:
Nó chắc chắn sẽ khiến bạn tốn thêm dung lượng và băng thông nếu bạn muốn sử dụng hình ảnh được mã hóa base64. Tuy nhiên, nếu trang web của bạn có nhiều hình ảnh nhỏ, bạn có thể giảm thời gian tải trang bằng cách mã hóa hình ảnh của bạn thành base64 và đặt chúng vào html. Theo cách này, trình duyệt máy khách sẽ không cần phải tạo nhiều kết nối với hình ảnh, nhưng sẽ có chúng trong html.