Chuyển đổi Base64 sang JPG

Dán Base64 chứa một bức ảnh chụp hoặc bất kỳ ảnh nào khác rồi lưu thành tệp .jpg. Chọn Bản gốc để giữ nguyên JPEG đến từng byte, hoặc JPG để mã hóa lại với chất lượng bạn đặt.

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 văn bản Base64 hoặc URI data:image/jpeg;base64 vào ô nhập.
  2. Xác nhận bản xem trước, định dạng phát hiện được và kích thước ảnh.
  3. JPG đã được chọn sẵn. Kéo thanh trượt Chất lượng: giá trị cao giữ nhiều chi tiết hơn, giá trị thấp cho tệp nhỏ hơn.
  4. Tải xuống tệp .jpg. Để giữ nguyên một ảnh JPEG có sẵn, hãy chọn Bản gốc.

JPEG dạng Base64 trông như thế nào

Mọi tệp JPEG đều bắt đầu bằng các byte FF D8 FF, nên chuỗi Base64 của nó luôn bắt đầu bằng /9j/. Các ký tự tiếp theo gợi ý nguồn gốc của tệp: /9j/4AAQSkZJRg là ảnh JFIF thông thường, còn /9j/4Q thường cho biết có header Exif do máy ảnh hoặc điện thoại ghi vào. Bạn sẽ gặp JPEG dạng Base64 trong ảnh tải lên từ ứng dụng di động, dữ liệu gửi từ biểu mẫu, bản xuất từ CMS, tệp đính kèm email và các trường ảnh trong REST API.

JPG và JPEG là cùng một định dạng; phần mở rộng ngắn hơn có từ thời MS-DOS, khi phần mở rộng tệp chỉ được dài tối đa ba ký tự. Kiểu MIME đúng là image/jpeg. Công cụ đọc chính các byte, nên một data URI ghi nhãn image/jpg hay image/png vẫn được giải mã chính xác.

Chất lượng, độ trong suốt và siêu dữ liệu

JPEG là định dạng nén mất dữ liệu, và mỗi lần mã hóa lại sẽ bỏ đi thêm một ít chi tiết. Khi đầu vào đã là JPEG và bạn chỉ cần tệp, hãy chọn Bản gốc để tệp được lưu mà không bị nén thêm lần nữa. Hãy dùng tùy chọn JPG khi bạn muốn chuyển đổi PNG, WebP hoặc định dạng khác, hoặc khi muốn thu nhỏ một ảnh chụp lớn. Chất lượng khoảng 80 đến 90 phần trăm là mức cân bằng phổ biến giữa dung lượng và độ sắc nét.

  • Độ trong suốt. JPEG không có kênh alpha, nên các vùng trong suốt được tô màu trắng. Hãy giữ độ trong suốt bằng PNG hoặc WebP.
  • Siêu dữ liệu. Khi chuyển đổi, chỉ các điểm ảnh được vẽ lại, nên dữ liệu Exif như kiểu máy ảnh hay vị trí GPS không được giữ lại. Bản gốc giữ nguyên tệp, kể cả siêu dữ liệu.

Giải mã JPEG Base64 trong Node.js

const fs = require('fs');
// bỏ tiền tố data URI nếu có
const b64 = input.replace(/^data:[^,]+,/, '');
fs.writeFileSync('photo.jpg', Buffer.from(b64, 'base64'));

Để làm theo chiều ngược lại, JPG sang Base64 biến một bức ảnh thành chuỗi hoặc data URI.

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

JPG có giống JPEG không?
Có. Cả hai phần mở rộng đều chỉ cùng một định dạng và cùng kiểu MIME image/jpeg. Bạn cứ thoải mái đổi tên tệp nếu chương trình yêu cầu một trong hai.
Vì sao nền trong suốt lại thành màu trắng?

JPEG không lưu được độ trong suốt, nên trình chuyển đổi tô trắng các điểm ảnh trong suốt trước khi mã hóa. Hãy chọn PNG hoặc WebP để giữ nền trong suốt.

Làm sao để không bị giảm chất lượng?

Nếu dữ liệu Base64 đã là JPEG, hãy tải xuống dạng Bản gốc để nhận đúng các byte ban đầu. Mã hóa lại sang JPG, dù ở chất lượng cao, luôn gây thêm một chút mất mát.

Ảnh có giữ được dữ liệu Exif không?

Chỉ khi dùng Bản gốc. Ảnh JPG đã chuyển đổi chỉ chứa các điểm ảnh, đây cũng là cách đơn giản để loại bỏ dữ liệu vị trí trước khi chia sẻ ảnh.