> base64 | decode | JPG <
// فك ترميز سلاسل Base64 ومعرّفات URI للبيانات إلى صور JPG / JPEG — مع الحفاظ على بيانات EXIF، ومعاينة فورية، وتنزيل بنقرة واحدة
ستظهر صورة JPEG المفكوكة هنا
بدون إعادة ضغط
بايتات JPEG الخارجة من أداة فك الترميز مطابقة بتةً ببتة لما تم ترميزه — الجودة نفسها، وبيانات EXIF نفسها، ومعاملات DCT نفسها.
فك ترميز محلي
تُفك سلسلة Base64 الخاصة بك باستخدام atob() بالكامل داخل المتصفح. لا رفع. لا خادم. ولا تحليلات على الحمولة.
معاينة حية
شاهد الصورة المفكوكة وأبعادها على الفور — ونزّلها بصيغة .jpg بنقرة واحدة.
// حول BASE64 إلى JPG
ما تقبله هذه الأداة
- >معرّف URI للبيانات: data:image/jpeg;base64,/9j/4AAQSkZ…
- >حمولة Base64 خام لصورة JPEG (تبدأ بـ /9j/)
- >Base64 مع مسافات بيضاء / فواصل أسطر مضمّنة
- >أبجدية RFC 4648 القياسية (+/، مع حشو = اختياري)
- >Base64 الآمن لعناوين URL (-_) — يُطبَّع تلقائيًا عند فك الترميز
- >صور JPEG متعددة الأجزاء (علامات JFIF وEXIF وAdobe وSPIFF)
حالات الاستخدام الشائعة
- >استرجاع صورة من استجابة JSON API
- >استخراج صورة ملف شخصي من عمود TEXT في قاعدة بيانات
- >فك ترميز حقل صورة في نظام إدارة محتوى مخزَّن كمعرّف URI للبيانات
- >إعادة بناء صورة من جزء MIME في بريد إلكتروني
- >عرض لقطة كاميرا مُرسَلة عبر WebSocket
- >تصحيح وسم <img src="data:image/jpeg;base64,…"> معطوب
- >التطبيقات التي تعمل دون اتصال أولاً وتخزّن الصور كـ Base64
كيف يعمل فك ترميز Base64 ← JPG
تزيل أداة فك الترميز أي بادئة لمعرّف URI للبيانات، وتُطبّع المسافات البيضاء والأحرف الآمنة لعناوين URL، ثم تستدعي atob() لتحويل كل مجموعة Base64 مكوَّنة من 4 أحرف إلى 3 بايتات ثنائية. تُغلَّف النتيجة في Blob بنوع MIME هو image/jpeg وتُعرض باستخدام وسم <img>. وبما أن Base64 تحويل ثنائي-إلى-نصي تقابلي، فإن مخرجات JPEG مطابقة بتةً ببتة للأصل — يتطابق تجزئة SHA-256 الخاصة بها، ولا تُفقد أي جودة.
مثال على معرّف URI لبيانات JPEG:
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/wAALCAABAAEBAREA/8QAFQABAQAAAAAAAAAAAAAAAAAAAAv/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/9oACAEBAAA/AKp//9k=
الأداء والتوافق
- >فك الترميز خطي O(n) بالنسبة لطول الحمولة — يتعامل مع 100 ميجابايت+ دون مشكلة
- >يستخدم atob() + Uint8Array الأصليين — بدون مكتبات خارجية
- >يدعم صور JPEG الغنية ببيانات EXIF من كل مصنّعي الكاميرات الكبار
- >يعمل في Chrome وFirefox وSafari وEdge والمتصفحات المحمولة
- >معاينة بتكبير بالقرص على الأجهزة المحمولة
- >التنزيل عبر Blob URL — دون رحلة ذهاب وإياب إلى الخادم
// كيفية فك ترميز BASE64 إلى JPG
الخطوة 1: اللصق
الصق سلسلة Base64 أو معرّف URI الكامل للبيانات في حقل الإدخال
الخطوة 2: فك الترميز
انقر على [DECODE] — تُعرض صورة JPEG على الفور
الخطوة 3: الفحص
تحقق من الصورة وأبعادها وحجم الملف قبل الحفظ
الخطوة 4: التنزيل
انقر على [DOWNLOAD .jpg] لحفظ صورة JPEG مطابقة بتةً ببتة على القرص
// أمثلة برمجية — BASE64 إلى JPG
JavaScript (Browser)
// Decode Base64 → JPEG Blob → preview
const b64 = '/9j/4AAQSkZJRgAB...';
const bin = atob(b64);
const arr = new Uint8Array(bin.length);
for (let i = 0; i < bin.length; i++) arr[i] = bin.charCodeAt(i);
const blob = new Blob([arr], { type: 'image/jpeg' });
document.getElementById('preview').src = URL.createObjectURL(blob);
فك ترميز حمولة Base64 خام لصورة JPEG، وتغليفها في Blob، وعرضها بوسم <img>. يمكن تعيين معرّفات URI للبيانات مباشرةً على src.
Node.js
const fs = require('fs');
const b64 = '/9j/4AAQSkZJRgAB...';
fs.writeFileSync('out.jpg', Buffer.from(b64, 'base64'));
فك ترميز نص Base64 إلى ملف JPEG باستخدام Buffer المدمج في Node.
Python
import base64
with open('out.jpg', 'wb') as f:
f.write(base64.b64decode('/9j/4AAQSkZJRgAB...'))
المكتبة القياسية فقط — Base64 → بايتات JPEG → ملف.
PHP
<?php
file_put_contents('out.jpg', base64_decode('/9j/4AAQSkZJRgAB...'));
سطر واحد باستخدام base64_decode() وfile_put_contents().
Shell (macOS / Linux)
echo '/9j/4AAQSkZJRgAB...' | base64 -d > out.jpg
تقرأ base64 -d وفق POSIX السلسلة من stdin وتكتب صورة JPEG على القرص.
// الأسئلة الشائعة — BASE64 إلى JPG
س: ما هو فك ترميز Base64 إلى JPG؟
ج: إنه يعكس صورة JPEG المرمَّزة بـ Base64 إلى شكلها الثنائي الأصلي. تقرأ أداة فك الترميز 4 أحرف ASCII في كل مرة من سلسلة Base64، وتبحث عنها في أبجدية RFC 4648، وتُخرج 3 بايتات ثنائية لكل مجموعة. مصفوفة البايتات الناتجة هي ملف JPEG كامل وصالح — بمعاملات DCT نفسها، وجداول Huffman نفسها، وبيانات EXIF الوصفية نفسها، والجودة نفسها كما قبل الترميز.
س: كيف أعرف أن سلسلة Base64 هي حقًا JPEG؟
ج: تبدأ كل صورة JPEG بالبايتين السحريين FF D8 (بداية الصورة). وعند ترميز هذين البايتين بـ Base64، تكون الأحرف الأربعة الأولى دائمًا /9j/. لذا فإن أي سلسلة Base64 تبدأ بـ /9j/4AAQ (رأس JFIF) أو /9j/2wC (الكثير من كاميرات الهواتف الذكية التي تستخدم Adobe APP14) هي JPEG. الصيغ الأخرى لها بادئات مختلفة: iVBORw0KGgo لـ PNG، وR0lGOD لـ GIF، وUklGR لـ WebP.
س: هل يمكنني فك ترميز معرّف URI للبيانات مباشرةً؟
ج: نعم. إذا بدأت سلسلتك بـ data:image/jpeg;base64,، فإن أداة فك الترميز تزيل تلك البادئة تلقائيًا وتعالج الحمولة. وإذا كان لديك الجزء الخام من Base64 فقط، فإن أداتنا تكتشف الرقم السحري لـ JPEG (/9j/) وتُغلّف البايتات المفكوكة كـ image/jpeg للمعاينة. تُزال المسافات البيضاء وفواصل الأسطر وعلامات الجدولة جميعها قبل فك الترميز، بحيث يمكنك لصق قيمة JSON منسّقة مباشرةً.
س: هل يقلل فك الترميز من جودة JPEG الخاصة بي؟
ج: لا. فك ترميز Base64 تحويل ثنائي محض — كل حرف Base64 يُطابَق حتميًا بـ 6 بِتات، و4 أحرف تُفك إلى 3 بايتات. بايتات JPEG الخارجة مطابقة بتةً ببتة لما تم ترميزه، لذا فإن الجودة هي ما حُفظت به صورة JPEG الأصلية. سيتطابق تجزئة SHA-256 للملف المفكوك مع تجزئة الأصل. وإذا بدت صورتك المفكوكة أسوأ مما هو متوقع، فإن فقدان الجودة حدث عند حفظ JPEG لأول مرة، وليس خلال رحلة Base64 ذهابًا وإيابًا.
س: صورة JPG المفكوكة معطوبة — ما الخطأ المحتمل؟
ج: الأسباب النموذجية:
• سلسلة مقتطعة — قُصّت Base64 في مكان ما. تنتهي صورة JPEG الكاملة بـ FF D9 (نهاية الصورة)، وهو ما يُرمَّز إلى /9k= أو 2Q== في Base64. إذا لم تنتهِ سلسلتك بأحد هذين النمطين مع حشو اختياري، فهي غير مكتملة.
• مرمَّزة مزدوجًا — رُمِّزت JPEG بـ Base64 مرتين. فُكَّ ترميزها مجددًا.
• أبجدية آمنة لعناوين URL — إذا كانت السلسلة تستخدم -_ بدلًا من +/، فإن بعض أدوات فك الترميز ترفضها. أداتنا تُطبّع كليهما.
• هي في الواقع صيغة مختلفة — الحمولة هي PNG أو WebP. استخدم أداة فك ترميز Base64 ← صورة العامة التي تكتشف الصيغة تلقائيًا.
س: هل تُحفَظ بياناتي الوصفية EXIF بعد فك الترميز؟
ج: نعم. مقطع EXIF APP1 (طراز الكاميرا، وGPS، والتاريخ/الوقت، والعدسة، وISO، وتوازن الأبيض، والاتجاه، إلخ) جزء من تدفق بايتات JPEG. وبما أن Base64 قابل للعكس بتةً ببتة، فإن كل بايت — بما في ذلك EXIF — يُستعاد. وإذا كنت بحاجة إلى صور خالية من EXIF لأسباب الخصوصية، فجرّد البيانات الوصفية بعد فك الترميز باستخدام أداة مثل exiftool -all= out.jpg أو إعادة تصدير قائمة على canvas في المتصفح.
س: هل يمكنني فك ترميز Base64 إلى JPG في الطرفية؟
ج: نعم. على macOS وLinux: echo '/9j/4AAQSkZJRgAB…' | base64 -d > out.jpg
(يستخدم base64 الأقدم في macOS الخيار -D.)
على Windows PowerShell: [IO.File]::WriteAllBytes('out.jpg', [Convert]::FromBase64String('/9j/4AAQSkZJRgAB…'))
إذا كان إدخالك معرّف URI كاملًا للبيانات، فمرّره أولًا عبر sed 's|^data:.*base64,||' لإزالة البادئة.
س: ما أقصى حجم لصورة JPG بـ Base64 يمكنني فك ترميزه؟
ج: حتى حد ذاكرة متصفحك. تحتاج صورة JPEG مفكوكة بحجم 100 ميجابايت إلى نحو 135 ميجابايت من نص Base64، وهو ما تتعامل معه متصفحات سطح المكتب الحديثة دون مشكلة. أما المتصفحات المحمولة فموثوقة حتى نحو 40 ميجابايت. وبالنسبة للصور الكبيرة للغاية (تصديرات JPEG المحوّلة من RAW من كاميرات التنسيق المتوسط)، فكّر في فك الترميز من جانب الخادم: base64 -d photo.b64 > photo.jpg أسرع بكثير من رحلة المتصفح ذهابًا وإيابًا.
س: هل تعمل أداة فك الترميز دون اتصال؟
ج: نعم، بعد التحميل الأولي للصفحة. يستخدم فك الترميز بالكامل واجهات برمجة التطبيقات المدمجة في المتصفح (atob() وUint8Array وBlob وURL.createObjectURL())، ولا تحتاج أي منها إلى اتصال بالشبكة. يمكنك التأكد من ذلك بتعطيل شبكتك ومواصلة فك الترميز — تستمر المعاينة والتنزيل كلاهما في العمل.
س: هل صورة JPEG بـ Base64 مشفّرة أو خاصة؟
ج: لا. Base64 ترميز وليس تشفيرًا. يمكن لأي شخص لديه سلسلة Base64 الخاصة بك فك ترميزها إلى الصورة الأصلية في أجزاء من الثانية، وتأتي معها بيانات EXIF (بما في ذلك إحداثيات GPS). وإذا كانت صورة JPEG تحتوي على معلومات حسّاسة، فشفّرها (AES-GCM أو age أو PGP) قبل تطبيق Base64، ولا تنقل السلسلة إلا عبر HTTPS.
س: هل فك الترميز من جانب العميل — هل يُرفع أي شيء؟
ج: لا يُرفع أي شيء. كل خطوة — إزالة البادئة، وتطبيع المسافات البيضاء، واستدعاء atob()، وبناء Blob، وعرض <img>، وتشغيل التنزيل — تحدث في متصفحك. افتح علامة تبويب الشبكة في أدوات مطوّري المتصفح أثناء فك الترميز وسترى صفرًا من الطلبات الصادرة لحمولة Base64 الخاصة بك. هذه الأداة آمنة للقطات الشاشة السرية والصور الشخصية والبيانات الخاضعة للتنظيم.
س: كيف أفك ترميز Base64 إلى JPG في كود الإنتاج؟
ج: في Node.js: fs.writeFileSync('out.jpg', Buffer.from(b64, 'base64')). في Python: open('out.jpg','wb').write(base64.b64decode(b64)). في Go: b, _ := base64.StdEncoding.DecodeString(b64); os.WriteFile("out.jpg", b, 0644). في Java: Files.write(Path.of("out.jpg"), Base64.getDecoder().decode(b64)). في Rust: std::fs::write("out.jpg", base64::decode(b64)?)?. في Ruby: File.binwrite('out.jpg', Base64.decode64(b64)). في PHP: file_put_contents('out.jpg', base64_decode($b64)).
س: Base64 إلى JPG مقابل Base64 إلى PNG — أيهما أستخدم؟
ج: انظر إلى بادئة سلسلة Base64. إذا بدأت بـ /9j/، فهي JPEG — استخدم Base64 → JPG. وإذا بدأت بـ iVBORw0KGgo، فهي PNG — استخدم Base64 → PNG. لا يمكنك إجبار أداة فك ترميز JPEG على إخراج PNG (أو العكس)؛ فالبايتات السحرية تقول الحقيقة. وعند الشك، استخدم أداة فك الترميز العامة التي تكتشف الصيغة تلقائيًا وتحفظ بالامتداد الصحيح.