مشفر الصور Base64
تشفير الصور إلى Data URI بصيغة Base64 لـ HTML وCSS
اسحب صورة هنا أو انقر للرفع
يدعم PNG وJPG وSVG وWebP وGIF وAVIF
ما هو تشفير الصور بـ Base64؟
يحوّل تشفير الصور بـ Base64 البيانات الثنائية للصورة إلى سلسلة ASCII يمكن تضمينها مباشرةً في HTML أو CSS أو JSON دون الحاجة إلى مرجع لملف خارجي. والناتج هو data URI — سلسلة مكتفية بذاتها تبدأ بـ data:image/png;base64, متبوعةً بالبايتات المُشفَّرة بـ Base64. تتعامل المتصفحات مع data URIs تمامًا كعناوين URL للصور الخارجية: تفكّ تشفير الحمولة وتعرض الصورة مضمَّنةً.
تستند هذه التقنية إلى RFC 2397 (مخطط data URI) وRFC 4648 (تشفير Base64). عند تشفير الصورة بـ Base64، يتحوّل كل 3 بايت من البيانات الثنائية إلى 4 أحرف ASCII، مما يزيد حجم الحمولة بنحو 33%. وعلى الرغم من هذه التكلفة الإضافية، تُلغي الصور المضمَّنة طلب HTTP لكل مورد — وهو تحسين ملموس عندما تكون الصور صغيرة (أيقونات، شعارات، بكسلات تتبع 1x1) وتتجاوز زمن الاستجابة لطلب منفصل تكلفة البايتات الإضافية.
تدعم data URIs جميع المتصفحات الحديثة وعملاء البريد الإلكتروني (مع بعض التحفظات) وأي سياق يقبل صيغة URI القياسية. وتُستخدم على نطاق واسع في تطبيقات الصفحة الواحدة وقوالب HTML للبريد الإلكتروني وإطارات SVG وتعريفات CSS للخلفية، حيث يُحسِّن تقليل إجمالي طلبات الشبكة وقت التحميل المُدرَك.
لماذا تستخدم هذا المشفر؟
تحوّل هذه الأداة أي صورة إلى data URI جاهز للاستخدام مباشرةً في متصفحك — دون رفع أو خادم أو حساب.
حالات استخدام تشفير الصور بـ Base64
بنية Data URI
يُشفِّر data URI صيغة الصورة ومحتواها الثنائي في سلسلة واحدة. يُساعد فهم بنيته عند إنشاء data URIs أو تحليلها برمجيًا:
| المكوّن | الوصف |
|---|---|
| data: | URI scheme identifier |
| image/png | MIME type of the image |
| ;base64, | Encoding declaration |
| iVBORw0KGgo... | Base64-encoded binary data |
مقارنة صيغ الصور لتشفير Base64
يؤثر اختيار صيغة الصورة على حجم مخرجات Base64 ودعم المتصفح وخصائص العرض. استخدم الصيغة الأنسب لنوع المحتوى:
| الصيغة | نوع MIME | الشفافية | الأنسب لـ |
|---|---|---|---|
| PNG | image/png | Yes | Screenshots, icons, UI elements |
| JPEG | image/jpeg | No | Photos, gradients, large images |
| SVG | image/svg+xml | Yes | Logos, icons, scalable graphics |
| WebP | image/webp | Yes | Modern web images, smaller files |
| GIF | image/gif | Yes (1-bit) | Simple animations, small icons |
| ICO | image/x-icon | Yes | Favicons |
أمثلة على الكود
كيفية تحويل الصور إلى data URIs بـ Base64 في اللغات والبيئات الشائعة:
// Convert a File object to a Base64 data URI
function fileToDataUri(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader()
reader.onload = () => resolve(reader.result)
reader.onerror = reject
reader.readAsDataURL(file)
// reader.result → "data:image/png;base64,iVBORw0KGgo..."
})
}
// Convert a canvas element to a data URI
const dataUri = canvas.toDataURL('image/png')
// → "data:image/png;base64,iVBORw0KGgo..."
// Convert with quality parameter (JPEG/WebP only)
const jpegUri = canvas.toDataURL('image/jpeg', 0.8)
// → "data:image/jpeg;base64,/9j/4AAQ..."import base64
# Read an image file and encode it to a data URI
with open('logo.png', 'rb') as f:
encoded = base64.b64encode(f.read()).decode('ascii')
data_uri = f'data:image/png;base64,{encoded}'
# → "data:image/png;base64,iVBORw0KGgo..."
# Detect MIME type automatically
import mimetypes
mime, _ = mimetypes.guess_type('photo.jpg')
# mime → "image/jpeg"
with open('photo.jpg', 'rb') as f:
b64 = base64.b64encode(f.read()).decode('ascii')
data_uri = f'data:{mime};base64,{b64}'import { readFileSync } from 'fs'
import { lookup } from 'mime-types'
// Read file and encode to data URI
const buffer = readFileSync('icon.png')
const base64 = buffer.toString('base64')
const mime = lookup('icon.png') // → "image/png"
const dataUri = `data:${mime};base64,${base64}`
// → "data:image/png;base64,iVBORw0KGgo..."
// From a Buffer received via HTTP/API
function bufferToDataUri(buf, mimeType) {
return `data:${mimeType};base64,${buf.toString('base64')}`
}# Encode an image to Base64 (macOS) base64 -i logo.png | tr -d '\n' # Encode an image to a full data URI (Linux) echo -n "data:image/png;base64,$(base64 -w 0 logo.png)" # Encode and copy to clipboard (macOS) echo -n "data:image/png;base64,$(base64 -i logo.png | tr -d '\n')" | pbcopy # Detect MIME type and encode (Linux, requires file command) MIME=$(file -b --mime-type image.webp) echo -n "data:$MIME;base64,$(base64 -w 0 image.webp)"