فك تشفير الصور Base64

فك تشفير data URI من Base64 إلى صور مرئية

إدخال Base64

ما هو فك تشفير الصور Base64؟

فك تشفير الصور Base64 هو عكس التشفير: يأخذ سلسلة Base64 أو data URI تمثل صورة ويحولها مرة أخرى إلى بيانات بكسل ثنائية مرئية. عند استلام سلسلة مثل data:image/png;base64,iVBORw0KGgo...، يزيل فك التشفير بادئة data URI، يعكس تشفير Base64 المحدد في RFC 4648، ويعيد بناء بايتات الصورة الأصلية. يمكن للمتصفح بعد ذلك تقديم البايتات المفك تشفيرها كصورة مرئية.

ربط data URIs (RFC 2397) نوع MIME والمحتوى المشفر Base64 في سلسلة واحدة. تظهر بشكل متكرر في استجابات API وكود بريد HTML وأوراق أنماط CSS وسجلات قاعدة البيانات حيث يتم تخزين الصور كنص بدلاً من ملفات ثنائية. يعتبر فك تشفير هذه السلاسل ضروريًا لمعاينة الصورة والتحقق من محتوياتها أو حفظها كملف مستقل. لأن Base64 يستخدم 4 أحرف ASCII لتمثيل كل 3 بايتات من البيانات الثنائية، فإن السلسلة المشفرة تكون دائمًا أكبر بحوالي 33% من الصورة الأصلية.

تحلل هذه الأداة كلاً من data URIs الكاملة (data:image/png;base64,...) وسلاسل Base64 الخام بدون بادئة data:. بالنسبة للسلاسل الخام، يتم الكشف عن تنسيق الصورة تلقائيًا عن طريق فحص أول عدد قليل من أحرف Base64، التي تتوافق مع بايتات magic الخاصة بالملف — على سبيل المثال، يشير iVBORw0KGgo دائمًا إلى ملف PNG. يتم تقديم الصورة المفك تشفيرها مباشرة في المتصفح ويمكن تنزيلها كملف.

السيناريو الشائع هو العمل مع REST API يُرجع صورة ملف شخصي أو صورة مصغرة للمستند كسلسلة Base64 داخل حقل JSON — على سبيل المثال، {"avatar": "data:image/png;base64,iVBORw0KGgo..."}. لاستخدام الصورة، تقوم باستخراج قيمة الحقل وإزالة بادئة data URI حتى الفاصلة بما في ذلك الفاصلة، ثم توجيه الأحرف المتبقية من Base64 عبر فاك تشفير مثل atob() في JavaScript أو base64.b64decode() في Python لاستعادة البايتات الخام. لصق القيمة الكاملة في هذه الأداة يتجاوز جميع هذه الخطوات اليدوية ويقدم الصورة فورًا.

لماذا استخدام فاك تشفير الصور Base64 هذا؟

تحول هذه الأداة بيانات الصور Base64 بالكامل في متصفحك إلى صورة قابلة للعرض والتنزيل — بدون تحميل، بدون معالجة الخادم، بدون حساب مطلوب.

معاينة فورية
الصق سلسلة Base64 أو data URI وشاهد الصورة المفك تشفيرها على الفور. لا انتظار لمعالجة الخادم — يقوم المتصفح بفك التشفير وتقديم النتيجة محليًا.
🔒
معالجة تركز على الخصوصية
لا تترك بيانات الصورة الخاصة بك أبدًا جهازك. يعمل فك التشفير بالكامل في المتصفح باستخدام واجهات برمجة تطبيقات JavaScript الأصلية. لا تُرسل سلاسل Base64 إلى أي خادم.
🖼️
الكشف التلقائي للتنسيق
يدعم PNG و JPEG و SVG و WebP و GIF و BMP و ICO. يتم استخراج نوع MIME من بادئة data URI أو اكتشافها تلقائيًا من بايتات magic Base64 عند عدم وجود بادئة.
📋
تنزيل النتيجة
احفظ الصورة المفك تشفيرها كملف بالملحق الصحيح. يستخدم التنزيل التنسيق المكتشف — لا حاجة لإعادة تسمية يدوية من .txt إلى .png.

حالات الاستخدام لفك تشفير الصور Base64

تصحيح الأخطاء في الواجهة الأمامية
فحص الصور المشفرة بـ Base64 المضمنة في HTML أو CSS أو كود مصدر JavaScript. الصق data URI للتحقق من أن الصورة الصحيحة يتم تقديمها قبل النشر.
فحص استجابة API
غالبًا ما تُرجع واجهات برمجة تطبيقات REST و GraphQL الصور كسلاسل Base64 في حمولات JSON — صور الملف الشخصي وصور مصغرة للمستند أو رموز QR. فك تشفيرها للتحقق من تطابق المحتوى مع التوقعات.
تطوير نموذج البريد الإلكتروني
غالبًا ما تضمن رسائل البريد الإلكتروني HTML الصور كـ data URIs للالتفاف حول حظر الصور الخارجية. فك تشفير Base64 لمعاينة ما سيراه المتلقيون دون إرسال بريد اختبار.
التحقق من سجل قاعدة البيانات
عندما يتم تخزين الصور كنص Base64 في أعمدة قاعدة البيانات (حقول MongoDB أو PostgreSQL text)، فك تشفير سجلات العينة للتأكد من سلامة البيانات بعد الهجرات أو الاستيرادات.
تحليل الأمان
فحص حمولات الصور Base64 المريبة في السجلات أو رسائل البريد الإلكتروني أو حركة مرور الويب. يكشف فك التشفير عن محتوى الصورة الفعلي والتنسيق، مما يساعد على تحديد بكسل التتبع أو البيانات المضمنة غير المتوقعة.
التعلم والتعليم
فهم كيفية عمل تشفير Base64 بتشفير صورة ثم فك تشفيرها مرة أخرى. قارن الملف الأصلي بالنتيجة لتتحقق من أن Base64 هو تشفير بدون فقدان.

هيكل data URI للصور

يجمع data URI نوع الصورة والمحتوى المشفر في سلسلة واحدة. كل مكون ضروري للفك تشفير الصحيح: يشير المخطط (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:، يمكن تحديد تنسيق الصورة بفحص الأحرف الأولى. تتوافق هذه الأحرف مع بايتات magic الخاصة بالملف — تسلسلات بايت ثابتة في بداية كل ملف صورة تحدد التنسيق:

التنسيقبادئة Base64توقيع سادس عشرنوع 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...) بدون البيانات الوصفية. تقبل هذه الأداة كلا التنسيقين. عند لصق سلسلة خام، يكتشف تنسيق الصورة تلقائيًا من بايتات magic Base64.
هل يغير فك تشفير Base64 جودة الصورة؟
لا. Base64 هو تشفير بدون فقدان يحول البيانات الثنائية إلى نص ASCII والعودة دون تغيير بايت واحد. الصورة المفك تشفيرها متطابقة بايت تماما مع الملف الأصلي. أي فروقات جودة تلاحظها تأتي من تنسيق الصورة نفسها (على سبيل المثال، ضغط JPEG المطبق قبل التشفير)، وليس من خطوة فك تشفير Base64.
كيف يمكنني معرفة تنسيق صورة Base64؟
إذا بدأت السلسلة بـ data:image/png;base64، يتم التعلن عن التنسيق في نوع MIME. لسلاسل Base64 الخام، افحص الأحرف الأولى: يشير iVBORw0KGgo إلى PNG، /9j/ يشير إلى JPEG، R0lGOD يشير إلى GIF، و UklGR يشير إلى WebP. تتوافق هذه البادئات مع بايتات magic لكل تنسيق.
لماذا لا تفك سلسلة Base64 الخاصة بي التشفير؟
تتضمن الأسباب الشائعة البيانات المقطوعة (تم قطع السلسلة أثناء النسخ واللصق)، والأحرف غير الصحيحة (Base64 يستخدم A–Z و a–z و 0–9 و + و / و = للملء)، والمسافات المضمنة أو فواصل الأسطر، وبادئة data URI المفقودة أو المتشوهة. تزيل هذه الأداة المسافات تلقائيًا، لكن لا يمكن استعادة البيانات المقطوعة أو التالفة.
هل من الآمن فك تشفير صور Base64 من مصادر غير موثوقة؟
تقوم هذه الأداة بفك تشفير وتقديم الصور في sandbox المتصفح، مما يعزلها عن نظامك. ومع ذلك، يمكن أن تحتوي صور SVG على JavaScript مضمنة. تحظر المتصفحات الحديثة تنفيذ البرامج النصية في SVG المقدمة عبر علامات img أو data URIs، لكن كن حذرًا من ملفات SVG من مصادر غير موثوقة. لا تنفذ الأداة أي برامج نصية من الصور المفك تشفيرها.
هل يمكنني فك تشفير صور Base64 بدون اتصال بالإنترنت؟
نعم، بمجرد تحميل الصفحة. يعمل فك التشفير بالكامل محليًا في متصفحك باستخدام واجهات برمجة تطبيقات JavaScript الأصلية (atob و Uint8Array و Blob). لا يتم تقديم أي طلبات شبكة أثناء عملية فك التشفير. تعمل الأداة بشكل متطابق في وضع عدم الاتصال.
ما هو أقصى طول لسلسلة Base64 يمكن لهذه الأداة التعامل معه؟
يعتمد الحد العملي على ذاكرة متصفحك. يتعامل معظم المتصفحات الحديثة مع data URIs بحجم عدة ميجابايت بدون مشاكل. بالنسبة للصور الكبيرة جدًا (10 MB+ مشفرة)، قد تواجه تقديمًا أبطأ. بهذا الحجم، يعد فك التشفير برمجيًا باستخدام Node.js أو Python والكتابة مباشرة إلى ملف أكثر كفاءة من استخدام أداة قائمة على المتصفح.