ToolDeck

رمزگشای تصویر Base64

تبدیل Data URI های Base64 به تصاویر قابل مشاهده

ورودی 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 از 4 کاراکتر ASCII برای نمایش هر 3 بایت از داده باینری استفاده می‌کند، رشته رمزگذاری شده همیشه حدود 33% بزرگتر از تصویر اصلی است.

این ابزار هم URI داده‌های کامل (data:image/png;base64,...) و هم رشته‌های Base64 خالص بدون پیشوند data: را تجزیه می‌کند. برای رشته‌های خالص، قالب تصویر با بررسی چند کاراکتر اول Base64 به‌طور خودکار تشخیص داده می‌شود، که با بایت‌های جادویی فایل مطابقت دارند — برای مثال، iVBORw0KGgo همیشه یک فایل PNG را نشان می‌دهد. تصویر رمزگشایی شده مستقیماً در مرورگر ترسیم می‌شود و می‌تواند به‌عنوان فایل دانلود شود.

یک سناریوی معمول توسعه‌دهنده کار کردن با API REST است که عکس پروفایل یا تصویر بند کوچک سند را به‌عنوان رشته 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 اغلب تصاویر را به‌عنوان URI داده تعبیه می‌کنند تا از مسدود کردن تصویر خارجی اجتناب کنند. Base64 را رمزگشایی کنید تا پیش‌نمایش کنید که گیرندگان بدون ارسال ایمیل آزمایشی چه خواهند دید.
تایید رکورد پایگاه داده
هنگامی که تصاویر به‌عنوان متن Base64 در ستون‌های پایگاه داده ذخیره می‌شوند (MongoDB، فیلدهای متنی PostgreSQL)، رکوردهای نمونه را رمزگشایی کنید تا پس از مهاجرت‌ها یا واردات، یکپارچگی داده را تأیید کنید.
تجزیه‌وتحلیل امنیتی
بار تصویر Base64 مشکوک را در گزارش‌ها، ایمیل‌ها، یا ترافیک وب بررسی کنید. رمزگشایی محتوای و قالب تصویر واقعی را آشکار می‌کند، کمک می‌کند پیکسل‌های ردیابی یا داده‌های تعبیه شده غیرمنتظره را شناسایی کنید.
یادگیری و آموزش
بفهمید رمزنویسی Base64 چگونه کار می‌کند با رمزگذاری تصویر، سپس آن را دوباره رمزگشایی کنید. فایل اصلی را با نتیجه بازگردانی مقایسه کنید تا تأیید کنید که Base64 بدون تلفات است.

ساختار data URI برای تصاویر

data URI قالب تصویر و محتوای رمزگذاری شده را در یک رشته واحد بسته‌بندی می‌کند. هر مؤلفه برای رمزگشایی صحیح ضروری است: طرح (data:) نشان می‌دهد که URL خود‌کافی است به‌جای ارجاع به منبع خارجی؛ نوع MIME (مثل image/png) به رندرر می‌گوید وقتی بایت‌های خام را تفسیر می‌کند کدام قالب استفاده کند؛ نشانگر ;base64، محتوای رمزگذاری Base64 را از داده URI‌هایی که برای قالب‌های متن ساده از کدگذاری درصد استفاده می‌کنند متمایز می‌کند. بار Base64 خود ممکن است با یک یا دو کاراکتر = padding پایان یابد — اینها زمانی مورد نیاز هستند که تعداد بایت ورودی مضربی از سه نباشد، تضمین می‌کند که طول رمزگذاری شده همیشه مضربی از چهار است. حذف یا قطع هر یک از این مؤلفه‌ها باعث رمزگشایی ناموفق یا تولید تصویر خراب می‌شود.

مؤلفهتوضیح
data:URI scheme identifier
image/pngMIME type declaring the image format
;base64,Encoding declaration (always base64 for binary)
iVBORw0KGgo...Base64-encoded pixel data

تشخیص قالب تصویر از Base64

هنگام عدم وجود پیشوند data: در رشته Base64، قالب تصویر را می‌توان با بررسی چند کاراکتر اول شناسایی کرد. این کاراکتر‌ها با بایت‌های جادویی فایل مطابقت دارند — دنباله‌های بایتی ثابت در آغاز هر فایل تصویر که قالب را شناسایی می‌کند:

قالبپیشوند 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، +، / و = برای padding استفاده می‌کند)، فاصله‌های تعبیه‌شده یا شکست‌های خط، و پیشوند data URI گمشده یا خراب. این ابزار فاصله‌ها را خودکار حذف می‌کند، اما داده‌های بریده‌شده یا خراب را نمی‌توان بازیابی کرد.
آیا رمزگشایی تصاویر Base64 از منابع غیرقابل اعتماد امن است؟
این ابزار تصاویر را در sandbox مرورگر رمزگشایی و ترسیم می‌کند، که آنها را از سیستم شما جدا می‌کند. با این حال، تصاویر SVG می‌توانند JavaScript تعبیه شده داشته باشند. مرورگرهای مدرن اجرای اسکریپت را در SVG‌های رندر شده از طریق برچسب img یا data URI مسدود می‌کنند، اما با SVG‌های از منابع غیرقابل‌اعتماد احتیاط کنید. ابزار هیچ اسکریپتی از تصاویر رمزگشایی‌شده اجرا نمی‌کند.
آیا می‌توانم بدون اتصال اینترنت تصاویر Base64 را رمزگشایی کنم؟
بله، پس از بارگذاری صفحه. تمام رمزگشایی به‌صورت محلی در مرورگر شما با استفاده از API‌های JavaScript بومی (atob، Uint8Array، Blob) اجرا می‌شود. در طول فرآیند رمزگشایی، درخواست شبکه‌ای انجام نمی‌شود. ابزار به‌طور یکسان آفلاین کار می‌کند.
حداکثر طول رشته Base64 که این ابزار می‌تواند مدیریت کند چقدر است؟
حد عملی بستگی به حافظه مرورگر شما دارد. بیشتر مرورگرهای مدرن بدون مشکل data URI‌های چند مگابایتی را مدیریت می‌کنند. برای تصاویر بسیار بزرگ (10 MB+ رمزگذاری‌شده)، ممکن است رندرینگ کندتر را تجربه کنید. در آن اندازه، رمزگشایی برنامه‌ای با Node.js یا Python و نوشتن مستقیم در فایل کارآمدتر از استفاده از ابزار مبتنی بر مرورگر است.