پرش به محتوا

رمزگشای تصاویر Base64 | رمزگشایی و پیش‌نمایش تصاویر آنلاین

ابزار رایگان آنلاین رمزگشایی تصاویر base64. رمزگشایی و پیش‌نمایی فوری رشته‌های base64 به عنوان تصاویر JPEG، PNG، GIF، WebP یا SVG. کار با URL داده‌ها و base64 خام.

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

یک رشته تصویر رمزگذاری شده base64 را جای‌گذاری کنید و برای مشاهده تصویر رمزگشایی کنید.

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

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

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

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

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

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

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

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

ماشین حساب بارگذاری...
📚

مستندات

رمزگشای تصویر بیس۶۴ چیست؟

رمزگشای تصویر بیس۶۴ ابزاری است که یک رشتهٔ متنیِ رمزگذاری‌شده با بیس۶۴ را دوباره به تصویر تبدیل می‌کند. بیس۶۴ روشی برای نوشتن داده‌های دودویی، مانند بایت‌های یک فایل تصویری، با استفاده از فقط ۶۴ نویسهٔ متنی ساده است (حروف، ارقام، +، / و = برای پُرکردن). مرورگرها، ایمیل‌ها و بسیاری از APIها تصاویر را به این شکل ذخیره می‌کنند تا تصویر بتواند درون متن ساده منتقل شود، نه به‌صورت فایلی جداگانه. رمزگشا این فرایند را معکوس می‌کند: رشته را وارد کنید تا تصویر اصلی ظاهر شود.

قالب نشانی اینترنتی داده

در وب، تصویر بیس۶۴ معمولاً به‌صورت یک نشانی اینترنتی داده نوشته می‌شود. الگو چنین است:

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

برای مثال:

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

هر بخش وظیفه‌ای دارد:

  • data: نشان می‌دهد که این مورد یک نشانی اینترنتی داده است، نه یک نشانی وب معمولی.
  • image/png نوع MIME است و به مرورگر می‌گوید این فایل از چه نوعی است.
  • ;base64 می‌گوید داده‌های پس از ویرگول با بیس۶۴ رمزگذاری شده‌اند.
  • هر چیزی پس از ویرگول، خودِ تصویر رمزگذاری‌شده است.

رمزگشا چگونه کار می‌کند

رمزگشایی در چهار مرحله انجام می‌شود.

  1. ابزار بررسی می‌کند که آیا رشته با data: شروع می‌شود یا نه. نشانی اینترنتی داده‌ای که نوع رسانه‌ای غیر از تصویر را مشخص کند، مانند data:text/plain، بلافاصله رد می‌شود، زیرا هرگز نمی‌توان آن را به‌صورت تصویر نمایش داد.
  2. هر فاصله، نویسهٔ تب یا شکست خط حذف می‌شود، زیرا رشته‌های طولانی بیس۶۴ گاهی در چند خط قرار می‌گیرند. محتوایی که به‌جای بیس۶۴ از کدگذاری درصدی استفاده کند، که RFC ۲۳۹۷ نیز آن را مجاز می‌داند، بدون تغییر عبور داده می‌شود.
  3. متن بیس۶۴ به بایت‌های خام بازگردانده می‌شود.
  4. ابزار به چند بایت نخست نتیجه نگاه می‌کند. هر قالب رایج تصویر با دنباله‌ای ثابت از بایت‌ها آغاز می‌شود که به آن امضا یا «عدد جادویی» می‌گویند. فایل‌های PNG با 89 50 4E 47 و فایل‌های JPEG با FF D8 FF آغاز می‌شوند و موارد دیگر نیز به همین شکل‌اند. رمزگشا این امضاها را تطبیق می‌دهد و تصویر را با نوعی که امضا مشخص می‌کند برچسب‌گذاری می‌کند.

بایت‌ها برچسب را تعیین می‌کنند. اگر نشانی اینترنتی داده بگوید data:image/png، اما بایت‌ها با FF D8 FF شروع شوند، رمزگشا نشانی را به data:image/jpeg بازسازی می‌کند تا رشته‌ای که دکمهٔ «کپی نشانی تصویر» ارائه می‌دهد، محتوای خود را نادرست توصیف نکند.

اگر رشته پیشوند data: نداشته باشد، رمزگشا آن را دادهٔ خام بیس۶۴ در نظر می‌گیرد، رمزگشایی می‌کند و امضا را به همان روش می‌خواند. اگر بایت‌ها با هیچ امضای شناخته‌شدهٔ تصویری مطابقت نداشته باشند و شبیه متن SVG نیز نباشند، رمزگشا اعلام می‌کند که به نظر نمی‌رسد رشته یک تصویر باشد. قالبی حدس زده نمی‌شود و نوع پیش‌فرضی نیز به‌عنوان جایگزین به کار نمی‌رود.

SVG متفاوت مدیریت می‌شود، زیرا SVG یک قالب متنی (XML) است، نه دودویی، و بنابراین امضای ثابت بایتی ندارد. رمزگشا ۱۰۲۴ بایت نخست متن رمزگشایی‌شده را برای یافتن برچسب <svg، یک اعلان XML مانند <?xml version="1.0"?> که پس از آن یکی از این برچسب‌ها بیاید، یا اعلان نوع سند SVG که پس از آن یکی از این برچسب‌ها بیاید، بررسی می‌کند. نشانگر ترتیب بایت در ابتدای متن، که برخی ویرایشگرها به فایل‌های UTF-8 اضافه می‌کنند، نادیده گرفته می‌شود. چون SVG را نمی‌توان از روی امضای بایتی شناسایی کرد، نشانی اینترنتی داده‌ای که image/svg+xml را اعلام می‌کند، همان نوع اعلام‌شده را حفظ می‌کند.

فرمول اندازهٔ تصویر بیس۶۴

بیس۶۴ هر ۳ بایت دادهٔ دودویی را به ۴ نویسهٔ متنی تبدیل می‌کند. فرمول طول رمزگذاری‌شده چنین است:

1encoded_characters = 4 × ⌈original_bytes ÷ 3⌉
2

نمادهای ⌈ ⌉ به معنای «گرد کردن به بالا تا عدد صحیح بعدی» هستند، زیرا بیس۶۴ همیشه با گروه‌های ۴ نویسه کار می‌کند و گروه ناقص را با علامت‌های = پُر می‌کند.

برای فایل‌های بزرگ، این فرایند تقریباً به افزایش ۳۳٪ اندازه منجر می‌شود، زیرا ۴ ÷ ۳ ≈ ۱٫۳۳ است. فایل‌های کوچک ممکن است درصد افزایش بیشتری نشان دهند، زیرا گرد کردن به بالا تا گروه بعدیِ ۴ نویسه زمانی که دادهٔ اولیه کم باشد، تأثیر بیشتری دارد.

مثال حل‌شده

نمونهٔ PNG بالا به ۸۵ بایت دادهٔ تصویری رمزگشایی می‌شود. با استفاده از فرمول:

14 × ⌈85 ÷ 3⌉ = 4 × 29 = 116
2

طول رشتهٔ بیس۶۴ واقعاً ۱۱۶ نویسه است که با محاسبه مطابقت دارد. این مقدار ۳۶٪ بیشتر از ۸۵ بایت اولیه است (۱۱۶ ÷ ۸۵ ≈ ۱٫۳۶) و کمی بیشتر از مقدار ۳۳٪ است، زیرا فایل بسیار کوچک است.

قالب‌های تصویری پشتیبانی‌شده

رمزگشا امضای بایتی دادهٔ رمزگشایی‌شده را می‌خواند تا قالب را شناسایی کند. این انواع را تشخیص می‌دهد:

قالبنوع MIMEامضای بررسی‌شده
PNGimage/png89 50 4E 47 0D 0A 1A 0A
JPEGimage/jpegFF D8 FF
GIFimage/gifGIF87a یا GIF89a
WebPimage/webpRIFF، چهار بایت نادیده‌گرفته‌شده، سپس WEBPVP
BMPimage/bmpBM
ICO / CURimage/x-icon00 00 01 00 یا 00 00 02 00
SVGimage/svg+xmlبدون امضا؛ به‌عنوان متنی حاوی برچسب <svg شناسایی می‌شود

چگونه یک تصویر بیس۶۴ را رمزگشایی کنیم

  1. رشتهٔ بیس۶۴ را، با یا بدون پیشوند data:image/...، از HTML، CSS، پاسخ API یا ایمیل رونوشت کنید.
  2. آن را در کادر ورودی جای‌گذاری کنید.
  3. تصویر اندکی پس از توقف تایپ، یا با فشردن دکمهٔ رمزگشایی، به‌طور خودکار رمزگشایی می‌شود.
  4. تصویر رمزگشایی‌شده در بخش پیش‌نمایش ظاهر می‌شود. نشانی اینترنتی دادهٔ آن را می‌توان با دکمهٔ «رونوشت نشانی تصویر» رونوشت کرد و خود تصویر را نیز می‌توان با کلیک راست روی آن در پیش‌نمایش و انتخاب گزینهٔ ذخیرهٔ تصویر ذخیره کرد، زیرا در مرورگر مانند یک عنصر تصویری معمولی نمایش داده می‌شود.

کاربردهای رایج تصاویر بیس۶۴

  • جاسازی در HTML، CSS یا JavaScript: قرار دادن مستقیم دادهٔ تصویر در کد، نیاز به درخواست فایلی جداگانه را از بین می‌برد.
  • قالب‌های ایمیل: برخی برنامه‌های ایمیل به‌طور پیش‌فرض تصاویر پیوندشدهٔ خارجی را مسدود می‌کنند، اما تصویر بیس۶۴ جاسازی‌شده همچنان نمایش داده می‌شود.
  • ابزارهای HTML تک‌فایلی: یک صفحهٔ کامل، همراه با تصاویرش، می‌تواند به‌صورت یک فایل مستقل منتقل شود.
  • پاسخ‌های API: تصویر می‌تواند درون محمولهٔ JSON منتقل شود و به نقطهٔ پایانی جداگانه نیاز نداشته باشد.
  • پس‌زمینه‌ها و نمادهای CSS: گاهی نمادهای کوچک مستقیماً به‌صورت نشانی اینترنتی داده در یک شیوه‌نامه نوشته می‌شوند.

ملاحظات تصاویر بیس۶۴

کدگذاری بیس۶۴ راحت است، اما هزینه‌هایی دارد:

  • متن رمزگذاری‌شده تقریباً یک‌سوم از فایل اصلی بزرگ‌تر است.
  • مرورگرها نمی‌توانند تصویر جاسازی‌شده را مانند فایل پیوندشده در حافظهٔ نهان ذخیره کنند؛ بنابراین هر بار که صفحه یا شیوه‌نامه‌ای که آن را دربر گرفته بارگیری می‌شود، تصویر دوباره بارگیری می‌شود.
  • مرورگر باید پیش از نمایش تصویر، متن بیس۶۴ را رمزگشایی کند که مقدار کمی پردازش اضافی می‌طلبد.
  • به‌دلیل افزایش اندازه و از دست رفتن امکان ذخیره‌سازی در حافظهٔ نهان، جاسازی بیس۶۴ برای تصاویر کوچک مانند نمادها و لوگوهای ساده مناسب است. عکس‌های بزرگ معمولاً بهتر است به‌صورت فایل‌های تصویری معمولی ارائه شوند.

پرسش‌های متداول

رمزگشای تصویر بیس۶۴ چیست؟

این ابزار یک رشتهٔ متنیِ رمزگذاری‌شده با بیس۶۴ را به تصویر قابل‌نمایش، مانند فایل PNG، JPEG، GIF، WebP، BMP یا SVG، تبدیل می‌کند.

چگونه یک تصویر بیس۶۴ را رمزگشایی کنم؟

رشتهٔ بیس۶۴ را، با یا بدون پیشوند data:image/...، در رمزگشا جای‌گذاری کنید. رمزگشا رشته را می‌خواند، آن را رمزگشایی می‌کند و تصویر حاصل را نمایش می‌دهد.

آیا می‌توان یک رشتهٔ بیس۶۴ را بدون پیشوند نشانی اینترنتی داده رمزگشایی کرد؟

بله. رمزگشا آن را دادهٔ خام بیس۶۴ در نظر می‌گیرد، بایت‌ها را رمزگشایی می‌کند و با خواندن چند بایت نخست، قالب را از روی امضای آن، مانند PNG، JPEG، GIF، WebP، BMP یا ICO، شناسایی می‌کند. SVG با جست‌وجوی برچسب <svg در متن رمزگشایی‌شده شناسایی می‌شود. اگر هیچ‌یک از این موارد مطابقت نداشته باشند، رمزگشا به‌جای حدس زدن قالب، اعلام می‌کند که به نظر نمی‌رسد رشته یک تصویر باشد.

چرا تصویر بیس۶۴ من رمزگشایی نمی‌شود؟

سه علت بیشتر موارد را پوشش می‌دهند. ممکن است رشته شامل نویسه‌هایی خارج از الفبای استاندارد بیس۶۴ باشد که عبارت است از A تا Z، a تا z، 0 تا 9، +، / و =؛ گونهٔ base64url که در برخی توکن‌های وب استفاده می‌شود، به‌جای آن - و _ را می‌نویسد و پذیرفته نمی‌شود. ممکن است رشته در میانه بریده شده باشد و طولی برابر با یک واحد بیشتر از مضرب چهار داشته باشد، که هیچ رشتهٔ معتبر بیس۶۴ چنین طولی ندارد. یا ممکن است بایت‌ها به‌سادگی متعلق به یکی از قالب‌های تصویری پشتیبانی‌شده نباشند. نبودِ پُرکنندهٔ = به‌تنهایی مشکل‌ساز نیست و فاصله‌ها یا شکست‌های خط پیش از رمزگشایی حذف می‌شوند.

آیا کدگذاری بیس۶۴ نوعی امنیت یا رمزگذاری است؟

خیر. بیس۶۴ فقط روشی برای نمایش بایت‌ها به‌صورت متن است و چیزی را پنهان نمی‌کند. هر کسی می‌تواند یک رشتهٔ بیس۶۴ را در چند ثانیه با ابزاری رایگان رمزگشایی کند؛ بنابراین هرگز نباید برای حفاظت از تصاویر خصوصی یا داده‌های دیگر استفاده شود.

رشتهٔ بیس۶۴ چقدر از تصویر اصلی بزرگ‌تر است؟

برای فایل‌های بزرگ‌تر، حدود یک‌سوم بزرگ‌تر است، زیرا هر ۳ بایت از دادهٔ اصلی به ۴ نویسهٔ متنی تبدیل می‌شود. یک تصویر ۱۰۰ کیلوبایتی پس از کدگذاری تقریباً به ۱۳۳ کیلوبایت تبدیل می‌شود. تصاویر کوچک ممکن است به‌دلیل گرد کردن، درصد افزایش کمی بیشتری نشان دهند.

تاریخچه

بیس۶۴ از طرح‌های کدگذاری‌ای شکل گرفت که در دهه‌های ۱۹۷۰ و ۱۹۸۰ برای ارسال داده‌های دودویی از طریق سامانه‌های پستیِ محدود به متن ساده ساخته شده بودند؛ این روش برای ایمیل در RFC ۹۸۹ (۱۹۸۷) و سپس در RFC ۱۴۲۱ رسمیت یافت. استفاده از آن برای جاسازی تصاویر در صفحات وب پس از تعریف طرح نشانی اینترنتی data: در RFC ۲۳۹۷ (۱۹۹۸) ممکن شد و در میانهٔ دههٔ ۲۰۰۰، با جست‌وجوی توسعه‌دهندگان برای کاهش درخواست‌های HTTP جداگانه، به‌ویژه در اتصال‌های کند تلفن همراه، رواج بیشتری پیدا کرد.

منابع

  1. RFC 4648: کدگذاری‌های دادهٔ Base16، Base32 و Base64
  2. RFC 2397: طرح نشانی اینترنتی «data»
  3. مستندات وب MDN: نشانی‌های اینترنتی داده
  4. استاندارد WHATWG برای تشخیص نوع MIME