Base64 ইমেজ ডিকোডার
Base64 Data URI থেকে দেখার যোগ্য ইমেজে ফিরিয়ে আনুন
Base64 ইমেজ ডিকোডিং কি?
Base64 ইমেজ ডিকোডিং হল Base64 ইমেজ এনকোডিং এর বিপরীত: এটি একটি Base64 স্ট্রিং বা ডেটা URI গ্রহণ করে যা একটি ইমেজ প্রতিনিধিত্ব করে এবং এটিকে দৃশ্যমান বাইনারি পিক্সেল ডেটায় রূপান্তরিত করে। যখন আপনি data:image/png;base64,iVBORw0KGgo... এর মতো একটি স্ট্রিং পান, ডিকোডিং ডেটা URI প্রিফিক্স সরায়, RFC 4648 এ সংজ্ঞায়িত Base64 এনকোডিং বিপরীত করে, এবং আসল ইমেজ বাইটগুলি পুনর্গঠন করে। ব্রাউজার তখন ডিকোড করা বাইটগুলি একটি দৃশ্যমান ইমেজ হিসাবে রেন্ডার করতে পারে।
ডেটা URI (RFC 2397) MIME টাইপ এবং Base64-এনকোড করা সামগ্রী একটি একক স্ট্রিংয়ে বান্ডেল করে। এগুলি API প্রতিক্রিয়া, HTML ইমেল সোর্স কোড, CSS স্টাইলশীট, এবং ডেটাবেস রেকর্ডে প্রায়ই উপস্থিত থাকে যেখানে ছবিগুলি বাইনারি ফাইলের পরিবর্তে পাঠ্য হিসাবে সংরক্ষণ করা হয়। এই স্ট্রিংগুলি ডিকোড করা ইমেজ পূর্বরূপ দেখার জন্য, এর সামগ্রী যাচাই করার জন্য, বা এটি একটি স্বতন্ত্র ফাইল হিসাবে সংরক্ষণ করার জন্য প্রয়োজনীয়। কারণ Base64 প্রতিটি 3 বাইট বাইনারি ডেটার প্রতিনিধিত্ব করতে 4 ASCII অক্ষর ব্যবহার করে, এনকোড করা স্ট্রিং সর্বদা আসল ইমেজের চেয়ে প্রায় 33% বড় হয়।
এই টুলটি সম্পূর্ণ ডেটা URI (data:image/png;base64,...) এবং ডেটা: প্রিফিক্স ছাড়াই কাঁচা Base64 স্ট্রিং উভয়ই পার্স করে। কাঁচা স্ট্রিংগুলির জন্য, ইমেজ ফর্ম্যাট স্বয়ংক্রিয়ভাবে প্রথম কয়েকটি Base64 অক্ষর পরিদর্শন করে সনাক্ত করা হয়, যা ফাইলের ম্যাজিক বাইটের সাথে সংযুক্ত - উদাহরণস্বরূপ, iVBORw0KGgo সর্বদা একটি PNG ফাইল নির্দেশ করে। ডিকোড করা ইমেজ সরাসরি ব্রাউজারে রেন্ডার করা হয় এবং ফাইল হিসাবে ডাউনলোড করা যায়।
ডেভেলপারদের জন্য একটি সাধারণ পরিস্থিতি হল একটি REST API এর সাথে কাজ করা যা একটি প্রোফাইল ফটো বা ডকুমেন্ট থাম্বনেইল Base64 স্ট্রিং হিসাবে JSON ফিল্ডের মধ্যে প্রদান করে — উদাহরণস্বরূপ, {} বা {} সাথে ইমেজ। ইমেজ ব্যবহার করতে, আপনি ফিল্ড মান নিষ্কাশন করেন, ডেটা URI প্রিফিক্স কমা সহ সরান, তারপর বাকি Base64 অক্ষরগুলি atob() JavaScript এ বা Python এ base64.b64decode() এর মতো ডিকোডারের মধ্য দিয়ে পাঠান কাঁচা বাইট পুনরুদ্ধার করতে। এই টুলে সম্পূর্ণ মান পেস্ট করা এই সমস্ত ম্যানুয়াল পদক্ষেপ এড়িয়ে যায় এবং অবিলম্বে ইমেজ রেন্ডার করে।
কেন এই Base64 ইমেজ ডিকোডার ব্যবহার করবেন?
এই টুল Base64 ইমেজ ডেটা সম্পূর্ণভাবে আপনার ব্রাউজারে একটি দৃশ্যমান, ডাউনলোডযোগ্য ইমেজে রূপান্তরিত করে — কোনও আপলোড নেই, কোনও সার্ভার প্রক্রিয়াকরণ নেই, কোনও অ্যাকাউন্ট প্রয়োজন নেই।
Base64 ইমেজ ডিকোডিং ব্যবহারের ক্ষেত্র
ইমেজের জন্য ডেটা URI কাঠামো
একটি ডেটা URI ইমেজের ধরন এবং এনকোড করা সামগ্রী একটি একক স্ট্রিংয়ে প্যাকেজ করে। প্রতিটি উপাদান সঠিক ডিকোডিংয়ের জন্য অপরিহার্য: স্কিম (data:) সংকেত দেয় যে URL বাহ্যিক সম্পদের রেফারেন্সের পরিবর্তে স্ব-নিহিত; MIME টাইপ (যেমন image/png) রেন্ডারারকে কাঁচা বাইট ব্যাখ্যা করার সময় কোন ফর্ম্যাট ব্যবহার করতে হবে তা বলে; ;base64, মার্কার Base64-এনকোড করা সামগ্রীকে সাধারণ পাঠ্য ফর্ম্যাটের জন্য শতাংশ-এনকোডিং ব্যবহার করে এমন ডেটা URI থেকে আলাদা করে। Base64 পেলোড নিজেই একটি বা দুটি = প্যাডিং অক্ষর দিয়ে শেষ হতে পারে — এগুলি প্রয়োজন যখন ইনপুট বাইট গণনা তিনের একাধিক নয়, এনকোড করা দৈর্ঘ্য সর্বদা চারের একাধিক নিশ্চিত করে। এই উপাদানগুলির যে কোনও একটি বাদ দেওয়া বা বাধাগ্রস্ত করা ডিকোডিং ব্যর্থ হতে বা একটি দুর্নীতিগ্রস্ত ইমেজ উত্পাদন করে।
| উপাদান | বর্ণনা |
|---|---|
| data: | URI scheme identifier |
| image/png | MIME type declaring the image format |
| ;base64, | Encoding declaration (always base64 for binary) |
| iVBORw0KGgo... | Base64-encoded pixel data |
Base64 থেকে ইমেজ ফর্ম্যাট সনাক্ত করা
যখন একটি Base64 স্ট্রিং ডেটা: প্রিফিক্সের অভাব রয়েছে, ইমেজ ফর্ম্যাট প্রথম কয়েকটি অক্ষর পরিদর্শন করে সনাক্ত করা যায়। এই অক্ষরগুলি ফাইলের ম্যাজিক বাইটের সাথে সংযুক্ত — প্রতিটি ইমেজ ফাইলের শুরুতে নির্দিষ্ট বাইট সিকোয়েন্স যা ফর্ম্যাট সনাক্ত করে:
| ফর্ম্যাট | Base64 প্রিফিক্স | হেক্স স্বাক্ষর | MIME টাইপ |
|---|---|---|---|
| PNG | iVBORw0KGgo | 89 50 4E 47 | image/png |
| JPEG | /9j/ | FF D8 FF | image/jpeg |
| GIF | R0lGOD | 47 49 46 38 | image/gif |
| WebP | UklGR | 52 49 46 46 | image/webp |
| SVG | PHN2Zy | 3C 73 76 67 (text) | image/svg+xml |
| BMP | Qk | 42 4D | image/bmp |
| ICO | AAABAA | 00 00 01 00 | image/x-icon |
কোড উদাহরণ
জনপ্রিয় ভাষা এবং পরিবেশে Base64 ইমেজ স্ট্রিংগুলি ইমেজ ফাইলে ডিকোড করার বিষয়ে:
// 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)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)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># 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