🛠️

Whiz Tools

Build • Create • Innovate

رمزگشای تصویر Base64 و بیننده | تبدیل Base64 به تصاویر

رشته‌های تصویر کدگذاری شده با Base64 را به‌طور آنی رمزگشایی و پیش‌نمایش کنید. از فرمت‌های رایج مانند JPEG، PNG، GIF و سایر فرمت‌ها پشتیبانی می‌کند و برای ورودی‌های نامعتبر مدیریت خطا دارد.

رمزگشای تصویر Base64 و مشاهده‌گر

رشته تصویر کدگذاری شده با base64 را بچسبانید و آن را رمزگشایی کنید تا تصویر را مشاهده کنید.

پیش‌نمایش تصویر

تصویری برای نمایش وجود ندارد. یک رشته base64 بچسبانید تا به طور خودکار رمزگشایی شود.

از فرمت‌های JPEG، PNG، GIF و سایر فرمت‌های رایج تصویر پشتیبانی می‌کند.

دستورالعمل‌ها

1. رشته تصویر کدگذاری شده با base64 را در ناحیه متنی بالا بچسبانید.

2. تصویر به طور خودکار در حین تایپ رمزگشایی خواهد شد، یا روی دکمه 'رمزگشایی تصویر' کلیک کنید.

3. تصویر رمزگشایی شده در ناحیه پیش‌نمایش زیر ظاهر خواهد شد.

توجه: برای بهترین نتیجه، رشته باید با 'data:image/' شروع شود، اما ابزار سعی خواهد کرد رشته‌های بدون این پیشوند را نیز رمزگشایی کند.

📚

مستندات

رمزگشای تصویر Base64 و مشاهده‌گر

مقدمه

Base64 یک طرح رمزگذاری باینری به متن است که داده‌های باینری را در قالب یک رشته ASCII نمایش می‌دهد. این روش به طور معمول برای گنجاندن داده‌های تصویر به طور مستقیم در HTML، CSS، JavaScript، JSON و سایر فرمت‌های متنی که در آن‌ها نمی‌توان داده‌های باینری را به طور مستقیم گنجاند، استفاده می‌شود. این ابزار به شما امکان می‌دهد رشته‌های تصویر رمزگذاری شده با Base64 را رمزگشایی کرده و تصاویر حاصل را به طور مستقیم در مرورگر خود مشاهده کنید.

رمزگذاری Base64 اندازه داده را نسبت به باینری اصلی به طور تقریبی 33٪ افزایش می‌دهد، اما این امکان را فراهم می‌کند که تصاویر به طور مستقیم در اسناد متنی گنجانده شوند بدون اینکه نیاز به دانلود فایل‌های جداگانه باشد. این می‌تواند به ویژه برای تصاویر کوچک مانند آیکون‌ها، لوگوها یا گرافیک‌های ساده که راحتی گنجاندن آن‌ها بر اندازه افزایش یافته ارجحیت دارد، مفید باشد.

ابزار رمزگشای تصویر Base64 ما یک رابط ساده ارائه می‌دهد که در آن می‌توانید یک رشته تصویر رمزگذاری شده با Base64 را چسبانده و بلافاصله تصویر رمزگشایی شده را ببینید. این ابزار از تمام فرمت‌های رایج تصویر از جمله JPEG، PNG، GIF، WebP و SVG پشتیبانی می‌کند و می‌تواند هم فرمت URL داده (با پیشوند data:image/...) و هم رشته‌های خام Base64 را مدیریت کند.

جزئیات فنی

فرمت رمزگذاری Base64

رمزگذاری Base64 داده‌های باینری را به مجموعه‌ای از 64 کاراکتر ASCII (A-Z، a-z، 0-9، + و /) تبدیل می‌کند و از = برای پر کردن استفاده می‌کند. برای تصاویر در وب، داده‌های Base64 معمولاً به صورت URL داده‌ای با ساختار زیر فرمت می‌شوند:

1data:[<media type>][;base64],<data>
2

به عنوان مثال، یک تصویر PNG رمزگذاری شده با Base64 ممکن است به شکل زیر باشد:

1data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==
2

اجزای این فرمت عبارتند از:

  • data: - طرح URL
  • image/png - نوع MIME داده
  • ;base64 - روش رمزگذاری
  • , - یک جداکننده بین هدر و داده
  • داده‌های واقعی رمزگذاری شده با Base64

فرآیند رمزگشایی

هنگام رمزگشایی یک رشته تصویر Base64، مراحل زیر انجام می‌شود:

  1. رشته تجزیه می‌شود تا شناسایی کند که آیا شامل پیشوند URL داده‌ای است یا خیر
  2. اگر پیشوند وجود داشته باشد، نوع MIME برای تعیین فرمت تصویر استخراج می‌شود
  3. بخش داده‌های Base64 جدا شده و به داده‌های باینری رمزگشایی می‌شود
  4. داده‌های باینری به یک Blob یا URL شیء تبدیل می‌شود که می‌تواند به عنوان یک تصویر نمایش داده شود

اگر ورودی شامل پیشوند URL داده‌ای نباشد، رمزگشا سعی می‌کند آن را به عنوان داده خام Base64 در نظر بگیرد و نوع تصویر را از هدر باینری رمزگشایی شده استنباط کند یا به طور پیش‌فرض به PNG برگردد.

فرمت‌های تصویر پشتیبانی شده

این ابزار از تمام فرمت‌های رایج تصویر وب پشتیبانی می‌کند:

فرمتنوع MIMEموارد استفاده معمول
JPEGimage/jpegعکس‌ها، تصاویر پیچیده با رنگ‌های زیاد
PNGimage/pngتصاویری که به شفافیت نیاز دارند، اسکرین‌شات‌ها، گرافیک‌ها
GIFimage/gifانیمیشن‌های ساده، تصاویر با رنگ‌های محدود
WebPimage/webpفرمت مدرن با فشرده‌سازی بهتر نسبت به JPEG/PNG
SVGimage/svg+xmlگرافیک‌های وکتور، آیکون‌ها و تصاویر قابل مقیاس

موارد استفاده

تصاویر رمزگذاری شده با Base64 کاربردهای عملی متعددی در توسعه وب و فراتر از آن دارند:

  1. گنجاندن تصاویر در HTML/CSS/JS: با گنجاندن تصاویر به طور مستقیم در کد خود، درخواست‌های HTTP را کاهش می‌دهد که می‌تواند زمان بارگذاری صفحه را برای تصاویر کوچک بهبود بخشد.

  2. قالب‌های ایمیل: اطمینان از اینکه تصاویر به درستی در مشتریان ایمیل نمایش داده می‌شوند که به طور پیش‌فرض تصاویر خارجی را مسدود می‌کنند.

  3. برنامه‌های یک‌فایلی: ایجاد برنامه‌های HTML خودکفا که تمام منابع در یک فایل واحد گنجانده شده‌اند.

  4. پاسخ‌های API: شامل داده‌های تصویر به طور مستقیم در پاسخ‌های JSON بدون نیاز به نقاط انتهایی تصویر جداگانه.

  5. URI‌های داده‌ای در CSS: گنجاندن آیکون‌ها و تصاویر پس‌زمینه کوچک به طور مستقیم در فایل‌های CSS.

  6. دستکاری‌های Canvas: تسهیل ذخیره و انتقال داده‌های تصویر Canvas.

  7. برنامه‌های آفلاین: ذخیره تصاویر به عنوان رشته‌های متنی در localStorage یا IndexedDB.

ملاحظات عملکرد

در حالی که رمزگذاری Base64 راحتی را ارائه می‌دهد، با معایبی همراه است:

  • افزایش اندازه فایل: رمزگذاری Base64 اندازه داده را به طور تقریبی 33٪ افزایش می‌دهد.
  • عدم کشینگ مرورگر: تصاویر گنجانده شده نمی‌توانند به صورت جداگانه مانند فایل‌های تصویر خارجی کش شوند.
  • بارگذاری اضافی: مرورگرها باید رشته Base64 را قبل از رندر کردن رمزگشایی کنند.
  • چالش‌های نگهداری: تصاویر گنجانده شده به‌روزرسانی آن‌ها دشوارتر از فایل‌های مرجع شده هستند.

برای بهینه‌سازی عملکرد، معمولاً توصیه می‌شود که رمزگذاری Base64 فقط برای تصاویر کوچک (زیر 10 کیلوبایت) استفاده شود. تصاویر بزرگ‌تر معمولاً بهتر است به عنوان فایل‌های جداگانه ارائه شوند که می‌توانند به درستی کش و بهینه‌سازی شوند.

جایگزین‌ها

چندین جایگزین برای رمزگذاری Base64 برای موارد استفاده مختلف وجود دارد:

  1. گنجاندن SVG به صورت درون‌خط: برای گرافیک‌های وکتور، گنجاندن SVG به طور مستقیم معمولاً عملکرد و انعطاف‌پذیری بهتری نسبت به Base64-encoded SVG ارائه می‌دهد.

  2. WebP و فرمت‌های مدرن تصویر: این‌ها فشرده‌سازی بهتری نسبت به JPEG/PNG رمزگذاری شده با Base64 ارائه می‌دهند.

  3. اسپرایت‌های تصویر: ترکیب چندین تصویر کوچک به یک فایل واحد و استفاده از موقعیت‌دهی CSS.

  4. CDNها (شبکه‌های تحویل محتوا): برای سایت‌های تولیدی، ارائه تصاویر بهینه‌شده از یک CDN معمولاً کارآمدتر است.

  5. فشرده‌سازی داده: برای انتقال حجم زیادی از داده‌های باینری، الگوریتم‌های فشرده‌سازی تخصصی مانند gzip یا Brotli از Base64 کارآمدتر هستند.

مثال‌های کد

در اینجا مثال‌هایی از کار با تصاویر رمزگذاری شده با Base64 در زبان‌های برنامه‌نویسی مختلف آورده شده است:

1// تبدیل یک تصویر به Base64 در JavaScript (مرورگر)
2function imageToBase64(imgElement) {
3  const canvas = document.createElement('canvas');
4  canvas.width = imgElement.width;
5  canvas.height = imgElement.height;
6  
7  const ctx = canvas.getContext('2d');
8  ctx.drawImage(imgElement, 0, 0);
9  
10  // به عنوان URL داده (رشته Base64)
11  return canvas.toDataURL('image/png');
12}
13
14// نمایش یک تصویر Base64
15function displayBase64Image(base64String) {
16  const img = new Image();
17  
18  // مدیریت رشته‌هایی بدون پیشوند URL داده‌ای
19  if (!base64String.startsWith('data:')) {
20    base64String = `data:image/png;base64,${base64String}`;
21  }
22  
23  img.src = base64String;
24  document.body.appendChild(img);
25}
26

پیاده‌سازی HTML

در اینجا نحوه گنجاندن یک تصویر Base64 به طور مستقیم در HTML آورده شده است:

1<!-- گنجاندن یک تصویر Base64 به طور مستقیم در HTML -->
2<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="تصویر رمزگذاری شده با Base64">
3
4<!-- استفاده از CSS با یک تصویر پس‌زمینه Base64 -->
5<style>
6.base64-bg {
7  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==');
8  width: 100px;
9  height: 100px;
10}
11</style>
12<div class="base64-bg"></div>
13

تاریخچه

رمزگذاری Base64 ریشه‌های خود را در توسعه سیستم‌های پست الکترونیکی در دهه 1970 دارد. این روش برای حل مشکل انتقال داده‌های باینری از طریق سیستم‌هایی که فقط برای مدیریت متن ASCII طراحی شده بودند، ایجاد شد.

این طرح رمزگذاری در سال 1987 با انتشار RFC 989، که استاندارد Privacy Enhanced Mail (PEM) را تعریف کرد، رسمی شد. این بعداً در RFC 1421 و سایر استانداردهای مرتبط به‌روزرسانی شد. اصطلاح "Base64" خود از این ناشی می‌شود که رمزگذاری از 64 کاراکتر ASCII مختلف برای نمایش داده‌های باینری استفاده می‌کند.

در زمینه توسعه وب، استفاده از تصاویر رمزگذاری شده با Base64 با ظهور URL‌های داده‌ای، که برای اولین بار در RFC 2397 در سال 1998 پیشنهاد شد، محبوبیت بیشتری پیدا کرد. این امکان را فراهم می‌کرد که داده‌های باینری به طور مستقیم در HTML، CSS و سایر اسناد وب گنجانده شوند.

استفاده از تصاویر رمزگذاری شده با Base64 در توسعه وب در اواسط دهه 2000 به طور گسترده‌ای رواج یافت زیرا توسعه‌دهندگان به دنبال راه‌هایی برای کاهش درخواست‌های HTTP و بهبود زمان بارگذاری صفحه بودند. این تکنیک به ویژه در زمان افزایش توسعه وب موبایل، که در آن کاهش درخواست‌ها برای عملکرد در اتصالات موبایل کندتر حیاتی بود، مورد استقبال قرار گرفت.

امروز، رمزگذاری Base64 همچنان یک ابزار مهم در توسعه وب است، اگرچه استفاده از آن به طور هدفمندتر شده است زیرا بهترین شیوه‌ها تکامل یافته‌اند. رویکردهای مدرن معمولاً از رمزگذاری Base64 به‌طور انتخابی برای تصاویر کوچک و حیاتی استفاده می‌کنند در حالی که از روش‌های تحویل کارآمدتر مانند HTTP/2 برای دارایی‌های بزرگ‌تر استفاده می‌کنند.

منابع

  1. RFC 4648: The Base16, Base32, and Base64 Data Encodings
  2. RFC 2397: The "data" URL scheme
  3. MDN Web Docs: data URIs
  4. CSS-Tricks: Data URIs
  5. رمزگذار تصویر Base64
  6. Can I Use: Data URIs
  7. عملکرد وب: کی زمانی تصاویر را Base64 رمزگذاری کنیم (و کی نه)