বেস 64 এ কোনও চিত্র এনকোডিংয়ের প্রভাব কী?


97

আমি যদি কোনও চিত্রকে (jpg বা png) বেস 64 এ রূপান্তর করি তবে এটি কি আরও বড় হবে, না এর আকারও একই হবে? আর কত বড় হবে?

আমার ওয়েবসাইটে বেস 64 এনকোডযুক্ত চিত্রগুলি ব্যবহার করার পরামর্শ দেওয়া হচ্ছে?


4
কেবলমাত্র আপনি যখন এর মতো কিছু করতে চান তবে তা যদি আপনি সরল পাঠ্য সংস্থানগুলিতে সীমাবদ্ধ থাকেন এবং কোনও কারণে কোনও কাঁচা চিত্র বিন্যাস ব্যবহার করতে না পারেন।
Wug

এখানে একটি ভাল উত্তর আছে: stackoverflow.com/questions/1533113/…
স্টিপড

বেস 64 ডিপলিঙ্কগুলি অসম্ভব করে তোলে। এটি একটি প্লাস হতে পারে।
দামোব

@ উগ - জেনে রাখুন এটি অনেক দেরিতে জবাব দেওয়া নয় এবং বিষয়গুলি পরিবর্তিত হয়েছে তবে এটি অবশ্যই এমন সময় যেখানে আপনি বেস 64 প্রেরণ করে পারফরম্যান্সের উত্সাহ অর্জন করতে পারেন। বেস 64৪ টি এনকোডযুক্ত চিত্র (ছোটগুলি) সহ ওয়েবসকেটের মাধ্যমে বার্তা প্রেরণ প্রতিটি চিত্রের নিজস্ব অনুরোধের চেয়ে আরও পারফরম্যান্স হবে।
ফিলিপ

এটি একটি ভাল প্রশ্ন। আমি "বাইনারি চিত্রগুলি বা বেস 64 এনকোডযুক্ত সংরক্ষণ করুন" এর জন্য একটি ভাল উত্তর খুঁজছিলাম? এবং আমি এর মতো
11ira '

উত্তর:


132

এটি প্রায় 37% বড় হবে:

খুব মোটামুটিভাবে, বেস64-এনকোডেড বাইনারি ডেটার চূড়ান্ত আকারটি মূল ডেটার আকারের 1.37 গুনের সমান

সূত্র: http://en.wikedia.org/wiki/Base64


28
137% বড় নয়, মূল আকারের 137% :-) 37% বড় (আপনার উত্স অনুসারে)।
এরিক জে।

4
আমি বলতে চাই যে এটি মূল আকারের থেকে প্রায় 4/3।
কিউইক্সজ

চিত্রকে বেস 64 এ রূপান্তর করতে কোনও আকারের কি সীমাবদ্ধতা রয়েছে?
151291

4
@ ব্লেন্ডার তবে আমার ক্ষেত্রে যখন আমি 70 কেবি বিটম্যাপটি রূপান্তরিত করি তখন এটি 500 কেবি হয়ে যায়। এটি 37% নয়।
কেজেএজভা 48

@ কেজেজাভা 48: আপনি কীভাবে এটিকে স্ট্রিংয়ে রূপান্তর করছেন?
ব্লেন্ডার

16

কখন 6464 এনকোড করতে হবে এবং কখন ডেভিড ক্যালহাউনের কাছে নয় সে সম্পর্কে একটি সত্যিকারের সহায়ক ওভারভিউ

বুনিয়াদি উত্তর = জিজেপড বেস 64 এনকোডযুক্ত ফাইলগুলি ফাইলের আকারের সাথে প্রায়শ স্ট্যান্ডার্ড বাইনারি (jpg / png) এর সাথে তুলনাযোগ্য। Gzip'd বাইনারি ফাইলগুলির একটি ছোট ফাইল আকার থাকবে।

রেষ্টুরেন্ট এবং মোবাইল = আছে এনকোডিং এবং আপনার ইউআই আইকন gzipping, ইত্যাদি কিছু সুবিধা, কিন্তু অপরিণামদর্শী বড় ইমেজ জন্য এই কাজ করতে।


15

এটি বেস 64 এ আরও বড় হবে।

বেস 64 ডেটা এনকোড করতে বাইট প্রতি 6 বিট ব্যবহার করে, বাইনারি প্রতি বাইটে 8 বিট ব্যবহার করে। এছাড়াও, বেস 64 এর সাথে সামান্য প্যাডিং ওভারহেড রয়েছে। সমস্ত বিট বেস 64 এর সাথে ব্যবহার করা হয় না কারণ এটি সিস্টেমে বাইনারি ডেটা এনকোড করার জন্য প্রথম স্থানে তৈরি হয়েছিল যা কেবলমাত্র বাইনারি-ডেটা সঠিকভাবে প্রক্রিয়া করতে পারে।

এর অর্থ হ'ল এনকোডযুক্ত চিত্রটি প্রায় 25% বড়, প্যাডিংয়ের জন্য ধ্রুবক ওভারহেড হবে।


7

বেস 64 এ কোনও চিত্র এনকোডিং করা এটি প্রায় 30% বড় করে তুলবে।

ডেটা ইউআরআই স্কিম সম্পর্কে উইকিপিডিয়া নিবন্ধে বিশদটি দেখুন , যেখানে এটি উল্লেখ করেছে:

বেস 64-এনকোডড ডেটা ইউআরআইগুলি তাদের বাইনারি সমতুল্যের চেয়ে আকারে 1/3 বড়। (তবে, যদি এইচটিটিপি সার্ভার জিজিপ ব্যবহার করে প্রতিক্রিয়াটি সংকুচিত করে তবে এই ওভারহেডটি কমিয়ে ২-৩% করা হয়েছে)


7

উত্তরটি: এটি নির্ভর করে।

যদিও বেস 64-চিত্রগুলি বৃহত্তর, সেখানে কয়েকটি শর্ত যেখানে বেস 64 আরও ভাল পছন্দ।

বেস 64-চিত্রের আকার

বেস 64 64 টি বিভিন্ন অক্ষর ব্যবহার করে এবং এটি 2 ^ 6। সুতরাং বেস64 8 বিট অক্ষর প্রতি 6 বিট সঞ্চয় করে। সুতরাং অনুপাতটি রূপান্তরিত ডেটা থেকে বেস 64 এর ডেটাতে 6/8। এটি কোনও সঠিক গণনা নয়, তবে মোটামুটি অনুমান।

উদাহরণ:

একটি 48kb চিত্রের প্রায় 64kb বেস 64 রূপান্তরিত চিত্র হিসাবে প্রয়োজন।

গণনা: (48/6) * 8 = 64

লিনাক্স সিস্টেমে সাধারণ সিএলআই ক্যালকুলেটর:

$ cat /dev/urandom|head -c 48000|base64|wc -c
64843

বা একটি ছবি ব্যবহার:

$ cat my.png|base64|wc -c

বেস 64-চিত্র এবং ওয়েবসাইট

এই প্রশ্নের উত্তর দেওয়া আরও অনেক কঠিন। সাধারণভাবে বলতে গেলে, বেস 64 ব্যবহার করে ইমেজটি যত কম তত কম। তবে নিম্নলিখিত বিষয়গুলি বিবেচনা করুন:

  • এইচটিএমএল-ফাইল বা সিএসএস-ফাইলে এম্বেড হওয়া অনেকগুলি চিত্রের একই স্ট্রিং থাকতে পারে। পিএনজির জন্য আপনি প্রায়শই "এ" চরিত্রগুলি বারবার খুঁজে পান। জিজিপ (কখনও কখনও "ডিফলেট" নামে পরিচিত) ব্যবহার করে আকারে একটি জয়ও হতে পারে। তবে এটি চিত্রের সামগ্রীর উপর নির্ভর করে।
  • HTTP1.1 এর ওভারহেডের অনুরোধ করুন: বিশেষত প্রচুর কুকিজের সাহায্যে আপনি সহজেই অনুরোধ অনুযায়ী কয়েকটি কিলোবাইটের ওভারহেড পেতে পারেন। বেস 64 ইমেজ এম্বেড করা ব্যান্ডউইথ সংরক্ষণ করতে পারে।
  • এনভিড এসভিজি চিত্রগুলিকে বেসড 64 করবেন না, কারণ জিজেপ বেস 64 এর চেয়ে এক্সএমএলে কার্যকর হয়।
  • প্রোগ্রামিং: গতিশীল উত্পাদিত চিত্রগুলিতে দুটি নির্ভরশীল অনুরোধের সমন্বয় হিসাবে একটি অনুরোধে তাদের বিতরণ করা আরও সহজ।
  • ডিপলিঙ্কস: আপনি যদি চিত্রটি ডাউনলোড করা আটকাতে চান তবে এইচটিএমএল পৃষ্ঠা থেকে কোনও চিত্র বের করা একটু কৌশলযুক্ত।

3

যদি আপনি বেস 64 এনকোডড চিত্র ব্যবহার করতে চান তবে এটি অবশ্যই আপনার আরও স্থান এবং ব্যান্ডউইথের জন্য ব্যয় করবে। তবে আপনার সাইটে যদি অনেক ছোট চিত্র থাকে তবে আপনি আপনার চিত্রগুলি বেস 64 এ এনকোড করে এবং এইচটিএমএল এ রেখে পৃষ্ঠা লোডিং সময়টি হ্রাস করতে পারবেন। এইভাবে, ক্লায়েন্ট ব্রাউজারটি চিত্রগুলির সাথে প্রচুর সংযোগ স্থাপন করতে চাইবে না, তবে সেগুলি এইচটিএমএলে থাকবে।


এইচটিটিপি 2 সত্যই একবার আসার পরে এটি কোনও সমস্যা হবে না।
ফিলিপ

@ ফিলিপ এটি সত্য, তবে আমি এইচটিএমএল ফাইলে থাকা সমস্ত সংস্থান রাখার বহনযোগ্যতা ফ্যাক্টরের মতো করি। এটি স্পটিটি নেটওয়ার্কগুলির সাথে মোবাইল ফোনগুলিতে ক্যাচিংয়ে সহায়তা করবে।
আলাপ

@ অ্যালাপ এই সমস্যাটি হ'ল যদি আপনি পৃষ্ঠায় একটি পরিবর্তন করেন তবে আপনাকে চিত্র সহ সমস্ত সামগ্রী পুনরায় লোড করতে হবে। আপনার যদি সম্পদগুলি পৃথক করা থাকে তবে সেগুলির জন্য আপনার বয়স আরও বেশি হতে পারে এবং এটি ক্যাশে সংরক্ষণ করা হবে এবং ক্যাশে পুনরায় লোড হবে না এটি নিজের পৃষ্ঠাতে শেষ হবে।
ফিলিপ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.