Bộ giải mã hình ảnh Base64

Giải mã URI dữ liệu Base64 thành hình ảnh có thể nhìn thấy

Đầu vào Base64

Giải mã Base64 hình ảnh là gì?

Giải mã Base64 hình ảnh là hoạt động ngược lại của mã hóa Base64 hình ảnh: nó lấy một chuỗi Base64 hoặc URI dữ liệu đại diện cho một hình ảnh và chuyển đổi nó trở lại thành dữ liệu pixel nhị phân có thể nhìn thấy. Khi bạn nhận được một chuỗi như data:image/png;base64,iVBORw0KGgo..., giải mã sẽ loại bỏ tiền tố URI dữ liệu, đảo ngược mã hóa Base64 được định nghĩa trong RFC 4648 và tái tạo các byte hình ảnh gốc. Trình duyệt sau đó có thể hiển thị các byte được giải mã dưới dạng một hình ảnh có thể nhìn thấy.

URI dữ liệu (RFC 2397) gói loại MIME và nội dung được mã hóa Base64 vào một chuỗi duy nhất. Chúng thường xuất hiện trong phản hồi API, mã nguồn email HTML, bảng tính CSS và bản ghi cơ sở dữ liệu nơi hình ảnh được lưu trữ dưới dạng văn bản thay vì tệp nhị phân. Giải mã các chuỗi này là cần thiết để xem trước hình ảnh, xác minh nội dung hoặc lưu nó dưới dạng tệp độc lập. Vì Base64 sử dụng 4 ký tự ASCII để biểu diễn mỗi 3 byte dữ liệu nhị phân, chuỗi được mã hóa luôn lớn hơn khoảng 33% so với hình ảnh gốc.

Công cụ này phân tích cả URI dữ liệu đầy đủ (data:image/png;base64,...) và chuỗi Base64 thô mà không có tiền tố data:. Đối với các chuỗi thô, định dạng hình ảnh được phát hiện tự động bằng cách kiểm tra một vài ký tự Base64 đầu tiên, tương ứng với các byte kỳ diệu của tệp — ví dụ, iVBORw0KGgo luôn chỉ ra tệp PNG. Hình ảnh được giải mã được hiển thị trực tiếp trong trình duyệt và có thể được tải xuống dưới dạng tệp.

Một kịch bản phổ biến của nhà phát triển là làm việc với API REST trả về ảnh hồ sơ hoặc hình nhỏ tài liệu dưới dạng chuỗi Base64 bên trong trường JSON — ví dụ, {} với hình ảnh. Để sử dụng hình ảnh, bạn trích xuất giá trị trường, xóa tiền tố URI dữ liệu đến và bao gồm dấu phẩy, sau đó chuyển các ký tự Base64 còn lại thông qua bộ giải mã như atob() trong JavaScript hoặc base64.b64decode() trong Python để khôi phục các byte thô. Dán toàn bộ giá trị vào công cụ này sẽ bỏ qua tất cả các bước thủ công này và hiển thị hình ảnh ngay lập tức.

Tại sao sử dụng Bộ giải mã hình ảnh Base64 này?

Công cụ này chuyển đổi dữ liệu hình ảnh Base64 hoàn toàn trong trình duyệt của bạn thành một hình ảnh có thể xem và tải xuống — không tải lên, không xử lý máy chủ, không cần tài khoản.

Xem trước ngay lập tức
Dán chuỗi Base64 hoặc URI dữ liệu và xem hình ảnh được giải mã ngay lập tức. Đừng chờ xử lý phía máy chủ — trình duyệt giải mã và hiển thị kết quả cục bộ.
🔒
Xử lý ưu tiên quyền riêng tư
Dữ liệu hình ảnh của bạn không bao giờ rời khỏi thiết bị của bạn. Giải mã chạy hoàn toàn trong trình duyệt bằng cách sử dụng các API JavaScript gốc. Không có chuỗi Base64 nào được gửi tới bất kỳ máy chủ nào.
🖼️
Phát hiện định dạng tự động
Hỗ trợ PNG, JPEG, SVG, WebP, GIF, BMP và ICO. Loại MIME được trích xuất từ tiền tố URI dữ liệu hoặc được phát hiện tự động từ các byte kỳ diệu Base64 khi không có tiền tố.
📋
Tải xuống kết quả
Lưu hình ảnh được giải mã dưới dạng tệp có phần mở rộng chính xác. Tải xuống sử dụng định dạng được phát hiện — không cần đổi tên .txt thành .png theo cách thủ công.

Trường hợp sử dụng giải mã Base64 hình ảnh

Gỡ lỗi giao diện người dùng
Kiểm tra hình ảnh được mã hóa Base64 nhúng trong mã nguồn HTML, CSS hoặc JavaScript. Dán URI dữ liệu để xác minh rằng hình ảnh chính xác đang được hiển thị trước khi triển khai.
Kiểm tra phản hồi API
API REST và GraphQL thường trả về hình ảnh dưới dạng chuỗi Base64 trong tải trọng JSON — hình ảnh đại diện của người dùng, hình nhỏ tài liệu hoặc mã QR. Giải mã chúng để xác minh rằng nội dung phù hợp với kỳ vọng.
Phát triển mẫu email
Email HTML thường nhúng hình ảnh dưới dạng URI dữ liệu để bỏ qua tính năng chặn hình ảnh bên ngoài. Giải mã Base64 để xem trước những gì người nhận sẽ thấy mà không cần gửi email thử.
Xác minh bản ghi cơ sở dữ liệu
Khi hình ảnh được lưu trữ dưới dạng văn bản Base64 trong các cột cơ sở dữ liệu (MongoDB, trường văn bản PostgreSQL), hãy giải mã các bản ghi mẫu để xác nhận tính toàn vẹn của dữ liệu sau khi di chuyển hoặc nhập.
Phân tích bảo mật
Kiểm tra tải hình ảnh Base64 đáng ngờ trong nhật ký, email hoặc lưu lượng web. Giải mã tiết lộ nội dung và định dạng hình ảnh thực tế, giúp xác định các pixel theo dõi hoặc dữ liệu nhúng không mong muốn.
Học tập và giáo dục
Hiểu cách mã hóa Base64 hoạt động bằng cách mã hóa hình ảnh rồi giải mã ngược lại. So sánh tệp gốc với kết quả khứ hồi để xác minh rằng Base64 là mã hóa không mất dữ liệu.

Cấu trúc URI dữ liệu cho hình ảnh

URI dữ liệu gói loại hình ảnh và nội dung được mã hóa thành một chuỗi duy nhất. Mỗi thành phần đều cần thiết để giải mã chính xác: lược đồ (data:) báo hiệu rằng URL là tự chứa đựng hơn là tham chiếu tới tài nguyên bên ngoài; loại MIME (ví dụ image/png) cho trình kết xuất biết định dạng nào sử dụng khi diễn giải các byte thô; công cụ đánh dấu ;base64, phân biệt nội dung được mã hóa Base64 từ các URI dữ liệu sử dụng mã hóa phần trăm cho các định dạng văn bản thuần. Tải trọng Base64 tự nó có thể kết thúc bằng một hoặc hai ký tự đệm = — những ký tự này cần thiết khi số lượng byte đầu vào không phải là bội số của ba, đảm bảo độ dài được mã hóa luôn là bội số của bốn. Bỏ qua hoặc cắt ngắn bất kỳ thành phần nào trong số này sẽ gây ra lỗi giải mã hoặc tạo ra hình ảnh bị hỏng.

Thành phầnMô tả
data:URI scheme identifier
image/pngMIME type declaring the image format
;base64,Encoding declaration (always base64 for binary)
iVBORw0KGgo...Base64-encoded pixel data

Phát hiện định dạng hình ảnh từ Base64

Khi chuỗi Base64 không có tiền tố data:, định dạng hình ảnh có thể được xác định bằng cách kiểm tra một vài ký tự đầu tiên. Các ký tự này tương ứng với các byte kỳ diệu của tệp — các chuỗi byte cố định ở đầu mỗi tệp hình ảnh xác định định dạng:

Định dạngTiền tố Base64Chữ ký HexLoại MIME
PNGiVBORw0KGgo89 50 4E 47image/png
JPEG/9j/FF D8 FFimage/jpeg
GIFR0lGOD47 49 46 38image/gif
WebPUklGR52 49 46 46image/webp
SVGPHN2Zy3C 73 76 67 (text)image/svg+xml
BMPQk42 4Dimage/bmp
ICOAAABAA00 00 01 00image/x-icon

Ví dụ mã

Cách giải mã chuỗi hình ảnh Base64 trở lại tệp hình ảnh trong các ngôn ngữ và môi trường phổ biến:

JavaScript (browser)
// Decode a Base64 data URI to a Blob and create a download link
const dataUri = 'data:image/png;base64,iVBORw0KGgo...'

// Method 1: fetch API (simplest)
const res  = await fetch(dataUri)
const blob = await res.blob()
// blob.type → "image/png", blob.size → 2048

// Method 2: manual decode for older environments
const [header, b64] = dataUri.split(',')
const mime    = header.match(/:(.*?);/)[1]   // → "image/png"
const binary  = atob(b64)
const bytes   = Uint8Array.from(binary, c => c.charCodeAt(0))
const blob2   = new Blob([bytes], { type: mime })

// Create a download link
const url = URL.createObjectURL(blob)
const a   = document.createElement('a')
a.href = url
a.download = 'decoded.png'
a.click()
URL.revokeObjectURL(url)
Python
import base64
import re

data_uri = 'data:image/png;base64,iVBORw0KGgo...'

# Parse the data URI
match = re.match(r'data:(image/[\w+.-]+);base64,(.+)', data_uri)
mime_type = match.group(1)    # → "image/png"
b64_data  = match.group(2)

# Decode and write to file
image_bytes = base64.b64decode(b64_data)
ext = mime_type.split('/')[1].replace('jpeg', 'jpg').replace('svg+xml', 'svg')

with open(f'output.{ext}', 'wb') as f:
    f.write(image_bytes)
# → writes output.png (byte-for-byte identical to the original)

# Decode raw Base64 (no data: prefix)
raw_b64 = 'iVBORw0KGgo...'
image_bytes = base64.b64decode(raw_b64)
Node.js
import { writeFileSync } from 'fs'

const dataUri = 'data:image/png;base64,iVBORw0KGgo...'

// Extract MIME type and Base64 payload
const [meta, b64] = dataUri.split(',')
const mime = meta.match(/:(.*?);/)[1]  // → "image/png"

// Decode to Buffer and save
const buffer = Buffer.from(b64, 'base64')
writeFileSync('output.png', buffer)
// → output.png (identical to the original file)

// Validate by checking magic bytes
console.log(buffer.subarray(0, 4))
// PNG → <Buffer 89 50 4e 47>  (\x89PNG)
// JPEG → <Buffer ff d8 ff e0>
CLI (bash)
# Decode a raw Base64 string to an image file (Linux)
echo 'iVBORw0KGgo...' | base64 -d > output.png

# Decode a raw Base64 string to an image file (macOS)
echo 'iVBORw0KGgo...' | base64 -D > output.png

# Extract Base64 from a data URI and decode
echo 'data:image/png;base64,iVBORw0KGgo...' | \
  sed 's/^data:.*base64,//' | base64 -d > output.png

# Identify the image format from the decoded file
file output.png
# → output.png: PNG image data, 64 x 64, 8-bit/color RGBA

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

Sự khác biệt giữa URI dữ liệu và chuỗi Base64 thô là gì?
URI dữ liệu bao gồm tiền tố khai báo loại MIME và mã hóa: data:image/png;base64,iVBORw0KGgo.... Chuỗi Base64 thô chỉ chứa các byte được mã hóa (iVBORw0KGgo...) mà không có siêu dữ liệu. Công cụ này chấp nhận cả hai định dạng. Khi bạn dán chuỗi thô, nó tự động phát hiện định dạng hình ảnh từ các byte kỳ diệu Base64.
Giải mã Base64 có thay đổi chất lượng hình ảnh không?
Không. Base64 là mã hóa không mất dữ liệu chuyển đổi dữ liệu nhị phân sang văn bản ASCII và quay lại mà không thay đổi bất kỳ byte nào. Hình ảnh được giải mã giống hệt như tệp gốc từng byte. Bất kỳ sự khác biệt chất lượng nào bạn nhận thấy đều đến từ chính định dạng hình ảnh (ví dụ, nén JPEG được áp dụng trước mã hóa), không phải từ bước giải mã Base64.
Tôi có thể biết định dạng của hình ảnh Base64 là gì không?
Nếu chuỗi bắt đầu bằng data:image/png;base64, định dạng được khai báo trong loại MIME. Đối với các chuỗi Base64 thô, hãy kiểm tra một vài ký tự đầu tiên: iVBORw0KGgo chỉ PNG, /9j/ chỉ JPEG, R0lGOD chỉ GIF và UklGR chỉ WebP. Các tiền tố này tương ứng với các byte kỳ diệu của mỗi định dạng.
Tại sao chuỗi Base64 của tôi không giải mã được?
Các nguyên nhân phổ biến bao gồm dữ liệu bị cắt ngắn (chuỗi bị cắt khi sao chép-dán), ký tự không chính xác (Base64 sử dụng A-Z, a-z, 0-9, +, / và = để đệm), khoảng trắng hoặc ngắt dòng được nhúng và tiền tố URI dữ liệu bị thiếu hoặc định dạng sai. Công cụ này tự động loại bỏ khoảng trắng, nhưng dữ liệu bị cắt ngắn hoặc bị hỏng không thể được khôi phục.
Có an toàn không khi giải mã hình ảnh Base64 từ các nguồn không đáng tin cậy?
Công cụ này giải mã và hiển thị hình ảnh trong hộp cát của trình duyệt, tách chúng khỏi hệ thống của bạn. Tuy nhiên, hình ảnh SVG có thể chứa JavaScript được nhúng. Các trình duyệt hiện đại sẽ chặn thực thi tập lệnh trong SVG được hiển thị qua thẻ img hoặc URI dữ liệu, nhưng hãy cẩn thận với SVG từ các nguồn không đáng tin cậy. Công cụ không thực thi bất kỳ tập lệnh nào từ hình ảnh được giải mã.
Tôi có thể giải mã hình ảnh Base64 mà không cần kết nối Internet không?
Có, sau khi trang được tải. Tất cả giải mã chạy cục bộ trong trình duyệt của bạn bằng cách sử dụng các API JavaScript gốc (atob, Uint8Array, Blob). Không có yêu cầu mạng nào được thực hiện trong quá trình giải mã. Công cụ hoạt động giống hệt nhau ngoại tuyến.
Độ dài chuỗi Base64 tối đa mà công cụ này có thể xử lý là bao nhiêu?
Giới hạn thực tế tùy thuộc vào bộ nhớ của trình duyệt của bạn. Hầu hết các trình duyệt hiện đại xử lý các URI dữ liệu có kích thước vài megabyte mà không gặp vấn đề. Đối với hình ảnh rất lớn (10 MB+ được mã hóa), bạn có thể gặp hiển thị chậm hơn. Ở kích thước đó, giải mã theo chương trình bằng Node.js hoặc Python và ghi trực tiếp vào tệp hiệu quả hơn so với sử dụng công cụ dựa trên web.