ToolDeck

เครื่องมือถอดรหัสรูปภาพ Base64

ถอดรหัส Base64 data URI กลับเป็นรูปภาพ

ข้อมูล Base64

การถอดรหัส Base64 ของภาพคืออะไร?

การถอดรหัส Base64 ของภาพคือการดำเนินการย้อนกลับของการเข้ารหัส Base64 ของภาพ: ใช้สตริง Base64 หรือ data URI ที่แสดงถึงภาพและแปลงกลับไปเป็นข้อมูลพิกเซลไบนารีที่มองเห็นได้ เมื่อคุณได้รับสตริงเช่น data:image/png;base64,iVBORw0KGgo... การถอดรหัสจะลบคำนำหน้า data URI ให้เกิด Base64 ที่กำหนดใน RFC 4648 และสร้างไบต์รูปภาพต้นฉบับใหม่ จากนั้นเบราว์เซอร์สามารถแสดงผลไบต์ที่ถอดรหัสแล้วเป็นรูปภาพที่มองเห็นได้

URI ข้อมูล (RFC 2397) บรรจุประเภท MIME และเนื้อหาที่เข้ารหัส Base64 ลงในสตริงเดียว พวกเขามักจะปรากฏในการตอบสนองของ API โค้ดต้นฉบับอีเมล HTML แผ่นสไตล์ CSS และเรกคอร์ดฐานข้อมูลที่เก็บรูปภาพเป็นข้อความแทนไฟล์ไบนารี การถอดรหัสสตริงเหล่านี้เป็นสิ่งจำเป็นเพื่อดูตัวอย่างรูปภาพ ตรวจสอบเนื้อหา หรือบันทึกเป็นไฟล์อิสระ เนื่องจาก Base64 ใช้อักขระ ASCII 4 ตัวเพื่อแสดงไบต์ข้อมูลไบนารี 3 ไบต์ สตริงที่เข้ารหัสจึงมีขนาดใหญ่กว่ารูปภาพต้นฉบับประมาณ 33% เสมอ

เครื่องมือนี้แยกวิเคราะห์ทั้ง URI ข้อมูลแบบเต็ม (data:image/png;base64,...) และสตริง Base64 ดิบโดยไม่มีคำนำหน้า data: สำหรับสตริงดิบ รูปแบบภาพจะถูกตรวจสอบโดยอัตโนมัติโดยการตรวจสอบอักขระ Base64 สองสามตัวแรก ซึ่งตรงกับไบต์วิเศษของไฟล์ — เช่น iVBORw0KGgo บ่งชี้ถึงไฟล์ PNG เสมอ รูปภาพที่ถอดรหัสแล้วจะแสดงผลโดยตรงในเบราว์เซอร์และสามารถดาวน์โหลดเป็นไฟล์ได้

สถานการณ์ปกติของนักพัฒนาคือการทำงานกับ REST API ที่ส่งคืนรูปถ่ายโปรไฟล์หรือภาพขนาดย่อเอกสารเป็นสตริง Base64 ภายในฟิลด์ JSON — เช่น {} ที่มีรูปภาพ หากต้องการใช้รูปภาพ คุณจะแยกค่าฟิลด์ ลบคำนำหน้า data URI ถึงเครื่องหมายจุลภาค จากนั้นส่งอักขระ Base64 ที่เหลือผ่านตัวถอดรหัสเช่น atob() ใน JavaScript หรือ base64.b64decode() ใน Python เพื่อกู้คืนไบต์ดิบ การวางค่าทั้งหมดลงในเครื่องมือนี้จะข้ามขั้นตอนด้วยตนเองทั้งหมดและแสดงผลรูปภาพทันที

ทำไมต้องใช้ตัวถอดรหัส Base64 รูปภาพนี้?

เครื่องมือนี้แปลงข้อมูลรูปภาพ Base64 ทั้งหมดในเบราว์เซอร์ของคุณเป็นรูปภาพที่มองเห็นและดาวน์โหลดได้ — ไม่มีการอัปโหลด ไม่มีการประมวลผลบนเซิร์ฟเวอร์ ไม่จำเป็นต้องมีบัญชี

ดูตัวอย่างทันที
วางสตริง Base64 หรือ data URI และเห็นรูปภาพที่ถอดรหัสแล้วทันที อย่ารอการประมวลผลบนเซิร์ฟเวอร์ — เบราว์เซอร์ถอดรหัสและแสดงผลผลลัพธ์ในพื้นที่
🔒
การประมวลผลที่มีความเป็นส่วนตัวก่อน
ข้อมูลรูปภาพของคุณไม่เคยออกจากอุปกรณ์ของคุณ การถอดรหัสทำงานอย่างแท้จริงในเบราว์เซอร์โดยใช้ API JavaScript ดั้งเดิม ไม่มีสตริง Base64 ใดถูกส่งไปยังเซิร์ฟเวอร์ใด ๆ
🖼️
การตรวจสอบรูปแบบอัตโนมัติ
รองรับ PNG, JPEG, SVG, WebP, GIF, BMP และ ICO ประเภท MIME จะถูกแยกออกจากคำนำหน้า data URI หรือตรวจสอบโดยอัตโนมัติจากไบต์วิเศษ Base64 เมื่อไม่มีคำนำหน้า
📋
ดาวน์โหลดผลลัพธ์
บันทึกรูปภาพที่ถอดรหัสแล้วเป็นไฟล์ด้วยนามสกุลที่ถูกต้อง การดาวน์โหลดใช้รูปแบบที่ตรวจสอบ — ไม่จำเป็นต้องเปลี่ยนชื่อไฟล์ด้วยตนเองจาก .txt เป็น .png

กรณีการใช้งานการถอดรหัส Base64 รูปภาพ

การแก้ไขข้อบกพร่องของส่วนหน้า
ตรวจสอบรูปภาพที่เข้ารหัส Base64 ซึ่งฝังอยู่ในโค้ดต้นฉบับ HTML, CSS หรือ JavaScript วางสตริง data URI เพื่อตรวจสอบว่ารูปภาพที่ถูกต้องแสดงผลก่อนการปรับใช้
การตรวจสอบการตอบสนองของ API
API REST และ GraphQL มักจะส่งคืนรูปภาพเป็นสตริง Base64 ในเพย์โหลด JSON — ส่วนหน้าผู้ใช้ ภาพขนาดย่อเอกสาร หรือรหัส QR ถอดรหัสเพื่อตรวจสอบว่าเนื้อหาตรงกับความคาดหวัง
การพัฒนาเทมเพลตอีเมล
อีเมล HTML มักฝังรูปภาพเป็น data URI เพื่อข้ามการบล็อกรูปภาพภายนอก ถอดรหัส Base64 เพื่อดูตัวอย่างว่าผู้รับจะเห็นอะไรโดยไม่ต้องส่งอีเมลทดสอบ
การตรวจสอบบันทึกฐานข้อมูล
เมื่อรูปภาพถูกเก็บเป็นข้อความ Base64 ในคอลัมน์ฐานข้อมูล (MongoDB ฟิลด์ข้อความ PostgreSQL) ให้ถอดรหัสเรกคอร์ดตัวอย่างเพื่อยืนยันความสมบูรณ์ของข้อมูลหลังจากการโยกย้ายหรือนำเข้า
การวิเคราะห์ความปลอดภัย
ตรวจสอบเพย์โหลดรูปภาพ Base64 ที่น่าสงสัยในบันทึกอีเมลหรือการจราจรทางเว็บ การถอดรหัสเปิดเผยเนื้อหารูปภาพจริงและรูปแบบ ช่วยในการระบุพิกเซลติดตามหรือข้อมูลที่ฝังไว้ที่ไม่คาดคิด
การเรียนรู้และการศึกษา
ทำความเข้าใจว่าการเข้ารหัส Base64 ทำงานอย่างไรโดยการเข้ารหัสรูปภาพแล้วถอดรหัสกลับมา เปรียบเทียบไฟล์ต้นฉบับกับผลลัพธ์การเดินทางไป-กลับเพื่อตรวจสอบว่า Base64 เป็นการเข้ารหัสแบบไร้손失

โครงสร้าง data URI สำหรับรูปภาพ

data URI บรรจุประเภทรูปภาพและเนื้อหาที่เข้ารหัสลงในสตริงเดียว แต่ละส่วนประกอบมีความจำเป็นสำหรับการถอดรหัสที่ถูกต้อง: scheme (data:) ระบุว่า URL เป็นที่อยู่อาศัยเอง ไม่ใช่การอ้างอิงถึงทรัพยากรภายนอก ประเภท MIME (เช่น image/png) บอกเครื่องแสดงผลว่าใช้รูปแบบใดเมื่อตีความไบต์ดิบ เครื่องหมาย ;base64, แยกเนื้อหาที่เข้ารหัส Base64 จาก data URIs ที่ใช้การเข้ารหัสเปอร์เซ็นต์สำหรับรูปแบบข้อความธรรมชาติ เพย์โหลด Base64 เองอาจลงท้ายด้วยอักขระเติม = หนึ่งหรือสองตัว — สิ่งเหล่านี้จำเป็นเมื่อจำนวนไบต์อินพุตไม่เป็นทวีคูณของสาม เพื่อให้แน่ใจว่าความยาวที่เข้ารหัสเป็นทวีคูณของสี่เสมอ การละเว้นหรือตัดเนื้อหาของส่วนประกอบใด ๆ เหล่านี้จะทำให้การถอดรหัสล้มเหลวหรือสร้างรูปภาพที่เสีย

ส่วนประกอบคำอธิบาย
data:URI scheme identifier
image/pngMIME type declaring the image format
;base64,Encoding declaration (always base64 for binary)
iVBORw0KGgo...Base64-encoded pixel data

การตรวจสอบรูปแบบรูปภาพจาก Base64

เมื่อสตริง Base64 ไม่มีคำนำหน้า data: รูปแบบรูปภาพสามารถระบุได้โดยการตรวจสอบอักขระสองสามตัวแรก อักขระเหล่านี้สอดคล้องกับไบต์วิเศษของไฟล์ — ลำดับไบต์คงที่ที่จุดเริ่มต้นของไฟล์รูปภาพทุกไฟล์ที่ระบุรูปแบบ:

รูปแบบคำนำหน้า Base64ลายเซ็น Hexประเภท 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

ตัวอย่างรหัส

วิธีถอดรหัสสตริงรูปภาพ Base64 กลับเป็นไฟล์รูปภาพในภาษาและสภาพแวดล้อมที่นิยมใช้:

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

คำถามที่พบบ่อย

ความแตกต่างระหว่าง data URI และสตริง Base64 ดิบคืออะไร?
data URI รวมคำนำหน้าที่ประกาศประเภท MIME และการเข้ารหัส: data:image/png;base64,iVBORw0KGgo.... สตริง Base64 ดิบจะมีเฉพาะไบต์ที่เข้ารหัส (iVBORw0KGgo...) โดยไม่มีข้อมูลเมตา เครื่องมือนี้ยอมรับทั้งรูปแบบ เมื่อคุณวางสตริงดิบ จะตรวจสอบรูปแบบรูปภาพโดยอัตโนมัติจากไบต์วิเศษ Base64
การถอดรหัส Base64 เปลี่ยนคุณภาพของรูปภาพหรือไม่?
เลขที่ Base64 เป็นการเข้ารหัสแบบไร้손失ที่แปลงข้อมูลไบนารีเป็นข้อความ ASCII และกลับมาโดยไม่เปลี่ยนไบต์เดียว รูปภาพที่ถอดรหัสแล้วเหมือนกับไฟล์ต้นฉบับแบบไบต์ต่อไบต์ ความแตกต่างของคุณภาพใด ๆ ที่คุณสังเกตเห็นมาจากรูปแบบรูปภาพเอง (เช่น การบีบอัด JPEG ที่ใช้ก่อนการเข้ารหัส) ไม่ได้มาจากขั้นตอนการถอดรหัส Base64
ฉันจะบอกรูปแบบของรูปภาพ Base64 ได้อย่างไร?
หากสตริงเริ่มต้นด้วย data:image/png;base64 รูปแบบจะถูกประกาศในประเภท MIME สำหรับสตริง Base64 ดิบ ให้ตรวจสอบอักขระสองสามตัวแรก: iVBORw0KGgo ระบุ PNG, /9j/ ระบุ JPEG, R0lGOD ระบุ GIF และ UklGR ระบุ WebP คำนำหน้าเหล่านี้สอดคล้องกับไบต์วิเศษของรูปแบบแต่ละรูปแบบ
เหตุใดสตริง Base64 ของฉันจึงไม่สามารถถอดรหัสได้?
สาเหตุทั่วไป ได้แก่ ข้อมูลที่ถูกตัดสต็ปส์ (สตริงถูกตัดระหว่างการคัดลอก-วาง) อักขระที่ไม่ถูกต้อง (Base64 ใช้ A-Z, a-z, 0-9, +, / และ = สำหรับการเติม) ช่องว่างหรือตัวแบ่งบรรทัดที่ฝัง และคำนำหน้า data URI ที่หายไปหรือไม่ถูกต้อง เครื่องมือนี้จะลบช่องว่างโดยอัตโนมัติ แต่ไม่สามารถกู้คืนข้อมูลที่ถูกตัดสต็ปส์หรือเสียหายได้
ปลอดภัยหรือไม่ที่จะถอดรหัสรูปภาพ Base64 จากแหล่งที่ไม่น่าเชื่อถือ?
เครื่องมือนี้ถอดรหัสและแสดงผลรูปภาพในแซนด์บ็อกซ์ของเบราว์เซอร์ ซึ่งจะแยกเขาออกจากระบบของคุณ อย่างไรก็ตาม รูปภาพ SVG อาจมี JavaScript ที่ฝังไว้ เบราว์เซอร์สมัยใหม่จะบล็อกการดำเนินการของสคริปต์ใน SVG ที่แสดงผลผ่านแท็ก img หรือ data URIs แต่ให้ระวังกับ SVGs จากแหล่งที่ไม่น่าเชื่อถือ เครื่องมือจะไม่ดำเนินการสคริปต์ใด ๆ จากรูปภาพที่ถอดรหัสแล้ว
ฉันสามารถถอดรหัสรูปภาพ Base64 โดยไม่มีการเชื่อมต่ออินเทอร์เน็ตได้หรือไม่?
ใช่ หลังจากหน้าโหลด การถอดรหัสทั้งหมดทำงานในเบราว์เซอร์ของคุณโดยใช้ API JavaScript ดั้งเดิม (atob, Uint8Array, Blob) ไม่มีคำขอเครือข่ายที่ทำขึ้นระหว่างกระบวนการถอดรหัส เครื่องมือทำงานแบบเดิมในโหมดออฟไลน์
ความยาวสตริง Base64 สูงสุดที่เครื่องมือนี้สามารถจัดการได้คืออะไร?
ขีดจำกัดที่ใช้ได้จริงขึ้นอยู่กับหน่วยความจำของเบราว์เซอร์ เบราว์เซอร์สมัยใหม่ส่วนใหญ่จัดการ data URIs ขนาดหลายเมกะไบต์โดยไม่มีปัญหา สำหรับรูปภาพขนาดใหญ่มาก (10 MB+ เข้ารหัส) คุณอาจประสบกับการแสดงผลช้าลง ในขนาดนั้น การถอดรหัสโปรแกรมโดยใช้ Node.js หรือ Python และเขียนลงไฟล์โดยตรงมีประสิทธิภาพมากกว่าการใช้เครื่องมือที่ใช้เบราว์เซอร์