বেশিরভাগ ডাউনলোড ট্রাফিক ছবি নিয়ে গঠিত। ফলস্বরূপ, আপনি আপনার ডাউনলোডযোগ্য ছবিগুলিকে যত ছোট করতে পারবেন, আপনার অ্যাপ ব্যবহারকারীদের জন্য তত ভাল নেটওয়ার্ক অভিজ্ঞতা প্রদান করতে পারে। এই পৃষ্ঠাটি ইমেজ ফাইলগুলিকে ছোট এবং আরও নেটওয়ার্ক-বান্ধব করার জন্য নির্দেশিকা প্রদান করে।
ইমেজ ফরম্যাট সম্পর্কে
অ্যান্ড্রয়েড অ্যাপ্লিকেশানগুলি সাধারণত নিম্নলিখিত এক বা একাধিক ফাইল ফর্ম্যাটে ছবি ব্যবহার করে: AVIF, PNG, JPG এবং WebP৷ এই প্রতিটি ফরম্যাটের জন্য, ছবির আকার কমাতে আপনি কিছু পদক্ষেপ নিতে পারেন।
এভিআইএফ
অ্যান্ড্রয়েড 12 (এপিআই লেভেল 31) এবং উচ্চতর সমর্থনকারী ছবি যা AV1 ইমেজ ফাইল ফরম্যাট (AVIF) ব্যবহার করে। AVIF হল AV1 ব্যবহার করে এনকোড করা ছবি এবং সিকোয়েন্সের জন্য একটি ধারক বিন্যাস। AVIF ভিডিও কম্প্রেশন থেকে ইন্ট্রা-ফ্রেম এনকোডেড সামগ্রীর সুবিধা নেয়। পুরানো ইমেজ ফরম্যাট যেমন JPEG এর সাথে তুলনা করলে এটি একই ফাইল সাইজের জন্য ইমেজ কোয়ালিটি নাটকীয়ভাবে উন্নত করে। এই বিন্যাসের সুবিধাগুলি গভীরভাবে দেখার জন্য, জেক আর্চিবল্ডের ব্লগ পোস্টটি দেখুন।
পিএনজি
আপনার পিএনজি ফাইলগুলিকে ছোট করার একটি চাবিকাঠি হল প্রতিটি পিক্সেলের সারিতে ব্যবহৃত অনন্য রঙের সংখ্যা হ্রাস করা যা চিত্রটি অন্তর্ভুক্ত করে। কম রং ব্যবহার করে, আপনি পাইপলাইনের অন্যান্য পর্যায়ে কম্প্রেশন সম্ভাব্যতা উন্নত করেন।
অনন্য রঙের সংখ্যা হ্রাস করা একটি উল্লেখযোগ্য পার্থক্য করে কারণ PNG কম্প্রেশন কার্যকারিতা আংশিকভাবে একটি ডিগ্রীর ফাংশন যেখানে অনুভূমিকভাবে সংলগ্ন পিক্সেল রঙগুলি পরিবর্তিত হয়। এইভাবে, আপনার PNG চিত্রগুলির প্রতিটি সারিতে অনন্য রঙের সংখ্যা হ্রাস করা তাদের ফাইলের আকার হ্রাস করতে সহায়তা করতে পারে।
এই কৌশলটি অনুসরণ করার সিদ্ধান্ত নেওয়ার সময়, আপনার মনে রাখা উচিত যে অনন্য রঙের সংখ্যা কার্যকরভাবে হ্রাস করা ইমেজে ক্ষতিকারক এনকোডিং পর্যায় প্রয়োগ করার সমান। যাইহোক, একটি এনকোডিং টুল একটি আপাতদৃষ্টিতে ছোট ত্রুটি মানুষের চোখে দেখতে কতটা খারাপ তার বিচার করতে পারে না। অতএব, দক্ষ সংকোচন এবং গ্রহণযোগ্য চিত্রের গুণমানের মধ্যে সঠিক ভারসাম্য নিশ্চিত করতে সাহায্য করার জন্য আপনার এই কাজটি ম্যানুয়ালি করা উচিত।
দুটি বিশেষভাবে দরকারী পন্থা রয়েছে যা আপনি নিতে পারেন: সূচীকৃত ফরম্যাটের জন্য চেষ্টা করা এবং ভেক্টর পরিমাপ প্রয়োগ করা।
ইনডেক্স করা ফরম্যাটের জন্য চেষ্টা করুন
রঙ কমানোর যে কোনো প্রচেষ্টা আপনার রঙগুলিকে অপ্টিমাইজ করার চেষ্টা করে শুরু করা উচিত যাতে আপনি চিত্রটিকে PNG হিসাবে রপ্তানি করার সময় INDEXED বিন্যাসটি ব্যবহার করতে পারেন৷ INDEXED রঙ মোড ব্যবহার করার জন্য সর্বোত্তম 256টি রঙ নির্বাচন করে এবং সেই রঙের প্যালেটে সূচকগুলির সাথে সমস্ত পিক্সেল মান প্রতিস্থাপন করে কাজ করে। ফলাফল হল 16 মিলিয়ন (সম্ভাব্য) রঙ থেকে শুধুমাত্র 256 রঙে হ্রাস: 3 (স্বচ্ছতা ছাড়া) বা 4 (স্বচ্ছতা সহ) প্রতি পিক্সেল থেকে 1 বাইট প্রতি পিক্সেল থেকে। এই পরিবর্তন একটি উল্লেখযোগ্য প্রথম ধাপ ফাইল আকার হ্রাস.
চিত্র 1 শো একটি চিত্র এবং তার সূচীযুক্ত বৈকল্পিক দেখায়।
চিত্র 2 চিত্র 1 এ চিত্রটির জন্য রঙ প্যালেট দেখায়:
আপনার ছবিকে প্যালেটেড ইমেজ হিসাবে উপস্থাপন করা ফাইলের আকারকে উল্লেখযোগ্যভাবে উন্নত করার দিকে অনেক দূর এগিয়ে যায়, তাই আপনার বেশিরভাগ ছবি রূপান্তর করা যায় কিনা তা তদন্ত করে দেখা উচিত।
অবশ্যই, প্রতিটি চিত্রকে শুধুমাত্র 256টি রঙ দিয়ে সঠিকভাবে উপস্থাপন করা যায় না। কিছু চিত্র, উদাহরণস্বরূপ, সঠিক দেখতে 257, 310, 512 বা 912 রঙের প্রয়োজন হতে পারে। এই ধরনের ক্ষেত্রে, ভেক্টর কোয়ান্টাইজেশনও সহায়ক হতে পারে।
ভেক্টর কোয়ান্টাইজেশন
একটি সূচীকৃত চিত্র তৈরির প্রক্রিয়াটিকে ভেক্টর কোয়ান্টাইজেশন (VQ) হিসাবে আরও ভালভাবে বর্ণনা করা যেতে পারে। VQ বহুমাত্রিক সংখ্যার জন্য একটি রাউন্ডিং প্রক্রিয়া হিসাবে কাজ করে। এই প্রক্রিয়ায়, আপনার চিত্রের সমস্ত রঙ তাদের মিলের উপর ভিত্তি করে গোষ্ঠীভুক্ত হয়। একটি প্রদত্ত গোষ্ঠীর জন্য, সেই গোষ্ঠীর সমস্ত রঙ একটি একক কেন্দ্র বিন্দু মান দ্বারা প্রতিস্থাপিত হয়, যা সেই ঘরের রঙগুলির জন্য ত্রুটি কমিয়ে দেয় (বা "সাইট" যদি আপনি Voronoi পরিভাষা ব্যবহার করেন)। চিত্র 3-এ, সবুজ বিন্দুগুলি ইনপুট রঙের প্রতিনিধিত্ব করে, এবং লাল বিন্দুগুলি হল কেন্দ্র বিন্দু যা ইনপুট রঙগুলিকে প্রতিস্থাপন করে। প্রতিটি কোষ নীল রেখা দ্বারা আবদ্ধ।
একটি ছবিতে VQ প্রয়োগের ফলাফল অনন্য রঙের সংখ্যা হ্রাস করে, প্রতিটি রঙের গ্রুপকে একটি একক রঙ দিয়ে প্রতিস্থাপন করে যা ভিজ্যুয়াল মানের "বেশ কাছাকাছি"।
এই কৌশলটি আপনাকে আপনার ছবিতে অনন্য রঙের সর্বাধিক সংখ্যা নির্ধারণ করতে দেয়। উদাহরণস্বরূপ, চিত্র 4 একটি তোতার মাথাকে 16.7 মিলিয়ন রঙে (24 বিট প্রতি পিক্সেল, বা bpp) একটি সংস্করণের সাথে দেখায় যা শুধুমাত্র 16 (3 bpp) অনন্য রং ব্যবহার করার অনুমতি দেয়।
অবিলম্বে, আপনি দেখতে পারেন যে মানের একটি ক্ষতি আছে; বেশিরভাগ গ্রেডিয়েন্ট রঙ প্রতিস্থাপন করা হয়েছে, ছবিতে একটি ব্যান্ডিং প্রভাব প্রদান করে। এই চিত্রটির জন্য 16 টিরও বেশি অনন্য রঙের প্রয়োজন।
আপনার পাইপলাইনে একটি VQ ধাপ সেট আপ করা আপনাকে আপনার ইমেজ ব্যবহার করে এমন অনন্য রঙের প্রকৃত সংখ্যা সম্পর্কে আরও ভাল ধারণা পেতে সাহায্য করতে পারে এবং সেগুলি উল্লেখযোগ্যভাবে কমাতে সাহায্য করতে পারে। এই কৌশলটি বাস্তবায়নে সাহায্য করার জন্য আপনি ব্যবহার করতে পারেন এমন বেশ কয়েকটি সহজলভ্য সরঞ্জাম রয়েছে।
জেপিজি
আপনি যদি JPG ইমেজ ব্যবহার করে থাকেন, তবে সেখানে বেশ কিছু ছোট পরিবর্তন আপনি করতে পারেন যা সম্ভাব্যভাবে উল্লেখযোগ্য ফাইল-আকার সঞ্চয় প্রদান করে। এর মধ্যে রয়েছে:
- বিভিন্ন এনকোডিং পদ্ধতির মাধ্যমে একটি ছোট ফাইলের আকার তৈরি করা (মানকে প্রভাবিত না করে)।
- ভাল কম্প্রেশন ফলন করার জন্য মান সামান্য সামঞ্জস্য.
এই কৌশলগুলি অনুসরণ করলে প্রায়শই আপনি 25% পর্যন্ত ফাইলের আকার হ্রাস করতে পারেন।
টুল নির্বাচন করার সময়, মনে রাখবেন যে ফটো এক্সপোর্টিং টুলগুলি আপনার ছবিতে অপ্রয়োজনীয় মেটাডেটা, যেমন GPS তথ্য, সন্নিবেশ করতে পারে। ন্যূনতম, আপনার ফাইলগুলি থেকে এই তথ্যটি বের করে আনতে সহায়তা করার জন্য বিদ্যমান সরঞ্জামগুলি ব্যবহার করার চেষ্টা করুন৷
ওয়েবপি
WebP হল একটি নতুন ইমেজ ফরম্যাট যা Android 4.2.1 (API লেভেল 17) থেকে সমর্থিত। এই বিন্যাসটি ওয়েবে চিত্রগুলির জন্য উচ্চতর ক্ষতিহীন এবং ক্ষতিকর কম্প্রেশন প্রদান করে। WebP ব্যবহার করে, বিকাশকারীরা আরও ছোট, সমৃদ্ধ ছবি তৈরি করতে পারে। WebP লসলেস ইমেজ ফাইলগুলি PNGs থেকে গড়ে 26% ছোট । এই চিত্র ফাইলগুলি আরও 22% বেশি বাইটের খরচে স্বচ্ছতা (আলফা চ্যানেল নামেও পরিচিত) সমর্থন করে।
WebP ক্ষতিকারক ছবিগুলি সমতুল্য SSIM মানের সূচকে তুলনীয় JPG ছবির থেকে 25-34% ছোট । যে ক্ষেত্রে ক্ষতিকর RGB কম্প্রেশন গ্রহণযোগ্য, ক্ষতিকারক WebP এছাড়াও স্বচ্ছতা সমর্থন করে, সাধারণত PNG থেকে 3 গুণ ছোট ফাইলের আকার তৈরি করে।
WebP সম্পর্কে আরও তথ্যের জন্য, WebP সাইটে যান।
আপনি Android স্টুডিও ব্যবহার করে বিদ্যমান BMP, JPG, PNG বা স্ট্যাটিক GIF ছবিগুলিকে WebP ফর্ম্যাটে রূপান্তর করতে পারেন। আরও তথ্যের জন্য, অ্যান্ড্রয়েড স্টুডিও ব্যবহার করে ওয়েবপি ছবি তৈরি করুন দেখুন।
একটি বিন্যাস নির্বাচন করা হচ্ছে
বিভিন্ন ইমেজ ফরম্যাট বিভিন্ন ধরনের ছবির জন্য উপযুক্ত। JPG এবং PNG এর খুব আলাদা কম্প্রেশন প্রক্রিয়া রয়েছে এবং তারা বেশ ভিন্ন ফলাফল দেয়।
PNG এবং JPG-এর মধ্যে সিদ্ধান্ত প্রায়ই চিত্রের জটিলতায় নেমে আসে। চিত্র 5 দুটি চিত্র দেখায় যা বিকাশকারী কোন কম্প্রেশন স্কিম প্রয়োগ করে তার উপর নির্ভর করে বেশ ভিন্নভাবে বেরিয়ে আসে। বাম দিকের চিত্রটিতে অনেক ছোট বিবরণ রয়েছে এবং এইভাবে JPG এর সাথে আরও দক্ষতার সাথে সংকুচিত হয়। ডানদিকের ছবিটি, একই রঙের রান সহ, PNG এর সাথে আরও দক্ষতার সাথে সংকুচিত হয়।
একটি বিন্যাস হিসাবে WebP ক্ষতিকারক এবং ক্ষতিহীন উভয় মোডকে সমর্থন করতে পারে, এটি PNG এবং JPG উভয়ের জন্য একটি আদর্শ প্রতিস্থাপন করে। শুধুমাত্র মনে রাখতে হবে যে এটি শুধুমাত্র Android 4.2.1 (API স্তর 17) এবং উচ্চতর চলমান ডিভাইসগুলিতে নেটিভ সমর্থন করে৷ সৌভাগ্যবশত, বেশিরভাগ ডিভাইস সেই প্রয়োজনীয়তা পূরণ করে।
চিত্র 6 আপনাকে কোন কম্প্রেশন স্কিম ব্যবহার করতে হবে তা সিদ্ধান্ত নিতে সাহায্য করার জন্য একটি সহজ ভিজ্যুয়ালাইজেশন প্রদান করে।
সর্বোত্তম মানের মান নির্ধারণ করুন
কম্প্রেশন এবং ছবির মানের মধ্যে সঠিক ভারসাম্য অর্জন করতে আপনি ব্যবহার করতে পারেন এমন বেশ কয়েকটি কৌশল রয়েছে। একটি কৌশল স্কেলার মান ব্যবহার করে এবং তাই শুধুমাত্র JPG এবং WebP এর জন্য কাজ করে। অন্য কৌশলটি Butteraugli লাইব্রেরির সুবিধা নেয় এবং সমস্ত ইমেজ ফরম্যাটের জন্য ব্যবহারযোগ্য।
স্কেলার মান (শুধু JPG এবং WebP)
JPG এবং WebP এর শক্তি এই সত্য থেকে আসে যে আপনি ফাইলের আকারের সাথে গুণমানের ভারসাম্য রাখতে একটি স্কেলার মান ব্যবহার করতে পারেন। কৌশলটি হল আপনার ছবির জন্য সঠিক মানের মান কী তা খুঁজে বের করা। খুব কম একটি মানের স্তর ছবির মানের খরচে একটি ছোট ফাইল তৈরি করে। খুব বেশি মানের স্তর ব্যবহারকারীকে লক্ষণীয় সুবিধা প্রদান না করে ফাইলের আকার বাড়ায়।
সবচেয়ে সহজ সমাধান হল কিছু অ-সর্বোচ্চ মান বাছাই করা এবং সেই মানটি ব্যবহার করা। যাইহোক, সচেতন থাকুন যে গুণমানের মান প্রতিটি ছবিকে ভিন্নভাবে প্রভাবিত করে। যদিও 75% এর গুণমান, উদাহরণস্বরূপ, বেশিরভাগ ছবিতে সূক্ষ্ম দেখাতে পারে, কিছু ক্ষেত্রে ভাল নাও হতে পারে। আপনাকে নিশ্চিত করতে হবে যে আপনার নির্বাচিত সর্বোচ্চ মানটি চিত্রের একটি প্রতিনিধি নমুনার বিপরীতে পরীক্ষা করা উচিত। এছাড়াও, নিশ্চিত করুন যে আপনার সমস্ত পরীক্ষাগুলি মূল চিত্রগুলির বিরুদ্ধে করা হয়েছে, এবং সংকুচিত সংস্করণগুলিতে নয়।
বৃহৎ মিডিয়া অ্যাপ্লিকেশনের জন্য যেগুলি দিনে লক্ষ লক্ষ JPG আপলোড করে এবং পুনরায় পাঠায়, প্রতিটি সম্পদের জন্য হ্যান্ড-টিউনিং অব্যবহারিক৷ আপনি চিত্র বিভাগ অনুযায়ী বিভিন্ন মানের স্তর নির্দিষ্ট করে এই চ্যালেঞ্জটি মোকাবেলা করতে পারেন। উদাহরণস্বরূপ, আপনি থাম্বনেইলের জন্য মানের সেটিং হিসাবে 35% সেট করতে পারেন, যেহেতু একটি ছোট চিত্র আরও কম্প্রেশন আর্টিফ্যাক্ট লুকিয়ে রাখে।
বাটারগালি
Butteraugli প্রকল্প হল একটি লাইব্রেরি যা একটি চিত্রের সাইকোভিজ্যুয়াল ত্রুটির থ্রেশহোল্ড পরীক্ষা করার জন্য: যে বিন্দুতে একজন দর্শক চিত্রের অবক্ষয় লক্ষ্য করতে শুরু করে। অন্য কথায়, এই প্রকল্পটি আপনার সংকুচিত চিত্রটি কতটা বিকৃত তা পরিমাপ করার চেষ্টা করে।
Butteraugli আপনাকে ভিজ্যুয়াল মানের জন্য একটি লক্ষ্য নির্ধারণ করতে এবং তারপর PNG, JPG, WebP ক্ষতিকর, এবং WebP লসলেস কম্প্রেশন চালাতে দেয়। তারপর আপনি ফাইলের আকার এবং Butteraugli স্তরের সেরা ভারসাম্যের চিত্রটি চয়ন করতে পারেন। চিত্র 7 একটি উদাহরণ দেখায় যে কীভাবে ব্যবহারকারীর সমস্যা বুঝতে পারার জন্য ভিজ্যুয়াল বিকৃতি যথেষ্ট বেশি হওয়ার আগে ন্যূনতম JPG মানের স্তর খুঁজে পেতে বাটারউগলি ব্যবহার করা হয়েছিল; ফলাফলটি ফাইলের আকারে প্রায় 65% হ্রাস।
Butteraugli আপনাকে আউটপুট বা ইনপুটের উপর ভিত্তি করে এগিয়ে যেতে দেয়। অর্থাৎ, আপনি একটি ব্যবহারকারীর ফলাফলের চিত্রে লক্ষণীয় বিকৃতি অনুধাবন করার আগে সর্বনিম্ন মানের সেটিংটি সন্ধান করতে পারেন, অথবা আপনি তাদের সম্পর্কিত মানের স্তরগুলি শিখতে চিত্র-বিকৃতি স্তরগুলি পুনরাবৃত্তভাবে সেট করতে পারেন৷
পরিবেশন মাপ
এটি একটি সার্ভারে একটি চিত্রের শুধুমাত্র একটি একক রেজোলিউশন রাখা লোভনীয়। যখন একটি ডিভাইস চিত্রটি অ্যাক্সেস করে, সার্ভারটি সেই একটি রেজোলিউশনে এটি পরিবেশন করে এবং ডিভাইসে ডাউনস্কেলিং ছেড়ে দেয়।
এই সমাধানটি বিকাশকারীর জন্য সুবিধাজনক, তবে ব্যবহারকারীর জন্য সম্ভাব্য বেদনাদায়ক, কারণ সমাধানটি ব্যবহারকারীকে তাদের প্রয়োজনের চেয়ে অনেক বেশি ডেটা ডাউনলোড করতে বাধ্য করে৷ আপনার পরিবর্তে একাধিক আকারের ছবি সংরক্ষণ করা উচিত এবং একটি নির্দিষ্ট ব্যবহারের ক্ষেত্রে সবচেয়ে উপযুক্ত আকারটি পরিবেশন করা উচিত। উদাহরণস্বরূপ, একটি থাম্বনেইলের জন্য, একটি পূর্ণ আকারের সংস্করণ পরিবেশন এবং ডাউনস্কেল করার পরিবর্তে একটি প্রকৃত থাম্বনেইল চিত্র পরিবেশন করা অনেক কম নেটওয়ার্ক ব্যান্ডউইথ খরচ করে
এই পদ্ধতিটি ডাউনলোডের গতির জন্য ভাল, এবং যারা সীমিত বা মিটারযুক্ত ডেটা প্ল্যান ব্যবহার করছেন তাদের জন্য এটি কম ব্যয়বহুল। এভাবে চলতে থাকলে ইমেজ ডিভাইসে এবং মেন মেমরিতে কম জায়গা নেয়। বড় ছবিগুলির ক্ষেত্রে, যেমন 4K ছবিগুলি, এই পদ্ধতিটি ডিভাইসটিকে ছবিগুলি লোড করার আগে পুনরায় আকার দেওয়ার থেকেও বাঁচায়৷
এই পদ্ধতির প্রয়োগ করার জন্য আপনার কাছে সঠিক ক্যাশিং সহ বিভিন্ন রেজোলিউশনে ছবি প্রদানের জন্য একটি ব্যাকএন্ড ইমেজ পরিষেবা থাকা প্রয়োজন। এই কাজটিতে সহায়তা প্রদান করতে পারে এমন বিদ্যমান পরিষেবা রয়েছে৷ উদাহরণস্বরূপ, অ্যাপ ইঞ্জিন ইমেজ রিসাইজিং কার্যকারিতা ইতিমধ্যে ইনস্টল করা আছে।
,বেশিরভাগ ডাউনলোড ট্রাফিক ছবি নিয়ে গঠিত। ফলস্বরূপ, আপনি আপনার ডাউনলোডযোগ্য ছবিগুলিকে যত ছোট করতে পারবেন, আপনার অ্যাপ ব্যবহারকারীদের জন্য তত ভাল নেটওয়ার্ক অভিজ্ঞতা প্রদান করতে পারে। এই পৃষ্ঠাটি ইমেজ ফাইলগুলিকে ছোট এবং আরও নেটওয়ার্ক-বান্ধব করার জন্য নির্দেশিকা প্রদান করে।
ইমেজ ফরম্যাট সম্পর্কে
অ্যান্ড্রয়েড অ্যাপ্লিকেশানগুলি সাধারণত নিম্নলিখিত এক বা একাধিক ফাইল ফর্ম্যাটে ছবি ব্যবহার করে: AVIF, PNG, JPG এবং WebP৷ এই প্রতিটি ফরম্যাটের জন্য, ছবির আকার কমাতে আপনি কিছু পদক্ষেপ নিতে পারেন।
এভিআইএফ
অ্যান্ড্রয়েড 12 (এপিআই লেভেল 31) এবং উচ্চতর সমর্থনকারী ছবি যা AV1 ইমেজ ফাইল ফরম্যাট (AVIF) ব্যবহার করে। AVIF হল AV1 ব্যবহার করে এনকোড করা ছবি এবং সিকোয়েন্সের জন্য একটি ধারক বিন্যাস। AVIF ভিডিও কম্প্রেশন থেকে ইন্ট্রা-ফ্রেম এনকোডেড সামগ্রীর সুবিধা নেয়। পুরানো ইমেজ ফরম্যাট যেমন JPEG এর সাথে তুলনা করলে এটি একই ফাইল সাইজের জন্য ইমেজ কোয়ালিটি নাটকীয়ভাবে উন্নত করে। এই বিন্যাসের সুবিধাগুলি গভীরভাবে দেখার জন্য, জেক আর্চিবল্ডের ব্লগ পোস্টটি দেখুন।
পিএনজি
আপনার পিএনজি ফাইলগুলিকে ছোট করার একটি চাবিকাঠি হল প্রতিটি পিক্সেলের সারিতে ব্যবহৃত অনন্য রঙের সংখ্যা হ্রাস করা যা চিত্রটি অন্তর্ভুক্ত করে। কম রং ব্যবহার করে, আপনি পাইপলাইনের অন্যান্য পর্যায়ে কম্প্রেশন সম্ভাব্যতা উন্নত করেন।
অনন্য রঙের সংখ্যা হ্রাস করা একটি উল্লেখযোগ্য পার্থক্য করে কারণ PNG কম্প্রেশন কার্যকারিতা আংশিকভাবে একটি ডিগ্রীর ফাংশন যেখানে অনুভূমিকভাবে সংলগ্ন পিক্সেল রঙগুলি পরিবর্তিত হয়। এইভাবে, আপনার PNG চিত্রগুলির প্রতিটি সারিতে অনন্য রঙের সংখ্যা হ্রাস করা তাদের ফাইলের আকার হ্রাস করতে সহায়তা করতে পারে।
এই কৌশলটি অনুসরণ করার সিদ্ধান্ত নেওয়ার সময়, আপনার মনে রাখা উচিত যে অনন্য রঙের সংখ্যা কার্যকরভাবে হ্রাস করা ইমেজে ক্ষতিকারক এনকোডিং পর্যায় প্রয়োগ করার সমান। যাইহোক, একটি এনকোডিং টুল একটি আপাতদৃষ্টিতে ছোট ত্রুটি মানুষের চোখে দেখতে কতটা খারাপ তার বিচার করতে পারে না। অতএব, দক্ষ সংকোচন এবং গ্রহণযোগ্য চিত্রের গুণমানের মধ্যে সঠিক ভারসাম্য নিশ্চিত করতে সাহায্য করার জন্য আপনার এই কাজটি ম্যানুয়ালি করা উচিত।
দুটি বিশেষভাবে দরকারী পন্থা রয়েছে যা আপনি নিতে পারেন: সূচীকৃত ফরম্যাটের জন্য চেষ্টা করা এবং ভেক্টর পরিমাপ প্রয়োগ করা।
ইনডেক্স করা ফরম্যাটের জন্য চেষ্টা করুন
রঙ কমানোর যে কোনো প্রচেষ্টা আপনার রঙগুলিকে অপ্টিমাইজ করার চেষ্টা করে শুরু করা উচিত যাতে আপনি চিত্রটিকে PNG হিসাবে রপ্তানি করার সময় INDEXED বিন্যাসটি ব্যবহার করতে পারেন৷ INDEXED রঙ মোড ব্যবহার করার জন্য সর্বোত্তম 256টি রঙ নির্বাচন করে এবং সেই রঙের প্যালেটে সূচকগুলির সাথে সমস্ত পিক্সেল মান প্রতিস্থাপন করে কাজ করে। ফলাফল হল 16 মিলিয়ন (সম্ভাব্য) রঙ থেকে শুধুমাত্র 256 রঙে হ্রাস: 3 (স্বচ্ছতা ছাড়া) বা 4 (স্বচ্ছতা সহ) প্রতি পিক্সেল থেকে 1 বাইট প্রতি পিক্সেল থেকে। এই পরিবর্তন একটি উল্লেখযোগ্য প্রথম ধাপ ফাইল আকার হ্রাস.
চিত্র 1 শো একটি চিত্র এবং তার সূচীযুক্ত বৈকল্পিক দেখায়।
চিত্র 2 চিত্র 1 এ চিত্রটির জন্য রঙ প্যালেট দেখায়:
আপনার ছবিকে প্যালেটেড ইমেজ হিসাবে উপস্থাপন করা ফাইলের আকারকে উল্লেখযোগ্যভাবে উন্নত করার দিকে অনেক দূর এগিয়ে যায়, তাই আপনার বেশিরভাগ ছবি রূপান্তর করা যায় কিনা তা তদন্ত করে দেখা উচিত।
অবশ্যই, প্রতিটি চিত্রকে শুধুমাত্র 256টি রঙ দিয়ে সঠিকভাবে উপস্থাপন করা যায় না। কিছু চিত্র, উদাহরণস্বরূপ, সঠিক দেখতে 257, 310, 512 বা 912 রঙের প্রয়োজন হতে পারে। এই ধরনের ক্ষেত্রে, ভেক্টর কোয়ান্টাইজেশনও সহায়ক হতে পারে।
ভেক্টর কোয়ান্টাইজেশন
একটি সূচীকৃত চিত্র তৈরির প্রক্রিয়াটিকে ভেক্টর কোয়ান্টাইজেশন (VQ) হিসাবে আরও ভালভাবে বর্ণনা করা যেতে পারে। VQ বহুমাত্রিক সংখ্যার জন্য একটি রাউন্ডিং প্রক্রিয়া হিসাবে কাজ করে। এই প্রক্রিয়ায়, আপনার চিত্রের সমস্ত রঙ তাদের মিলের উপর ভিত্তি করে গোষ্ঠীভুক্ত হয়। একটি প্রদত্ত গোষ্ঠীর জন্য, সেই গোষ্ঠীর সমস্ত রঙ একটি একক কেন্দ্র বিন্দু মান দ্বারা প্রতিস্থাপিত হয়, যা সেই ঘরের রঙগুলির জন্য ত্রুটি কমিয়ে দেয় (বা "সাইট" যদি আপনি Voronoi পরিভাষা ব্যবহার করেন)। চিত্র 3-এ, সবুজ বিন্দুগুলি ইনপুট রঙের প্রতিনিধিত্ব করে, এবং লাল বিন্দুগুলি হল কেন্দ্র বিন্দু যা ইনপুট রঙগুলিকে প্রতিস্থাপন করে। প্রতিটি কোষ নীল রেখা দ্বারা আবদ্ধ।
একটি ছবিতে VQ প্রয়োগের ফলাফল অনন্য রঙের সংখ্যা হ্রাস করে, প্রতিটি রঙের গ্রুপকে একটি একক রঙ দিয়ে প্রতিস্থাপন করে যা ভিজ্যুয়াল মানের "বেশ কাছাকাছি"।
এই কৌশলটি আপনাকে আপনার ছবিতে অনন্য রঙের সর্বাধিক সংখ্যা নির্ধারণ করতে দেয়। উদাহরণস্বরূপ, চিত্র 4 একটি তোতার মাথাকে 16.7 মিলিয়ন রঙে (24 বিট প্রতি পিক্সেল, বা bpp) একটি সংস্করণের সাথে দেখায় যা শুধুমাত্র 16 (3 bpp) অনন্য রং ব্যবহার করার অনুমতি দেয়।
অবিলম্বে, আপনি দেখতে পারেন যে মানের একটি ক্ষতি আছে; বেশিরভাগ গ্রেডিয়েন্ট রঙ প্রতিস্থাপন করা হয়েছে, ছবিতে একটি ব্যান্ডিং প্রভাব প্রদান করে। এই চিত্রটির জন্য 16 টিরও বেশি অনন্য রঙের প্রয়োজন।
আপনার পাইপলাইনে একটি VQ ধাপ সেট আপ করা আপনাকে আপনার ইমেজ ব্যবহার করে এমন অনন্য রঙের প্রকৃত সংখ্যা সম্পর্কে আরও ভাল ধারণা পেতে সাহায্য করতে পারে এবং সেগুলি উল্লেখযোগ্যভাবে কমাতে সাহায্য করতে পারে। এই কৌশলটি বাস্তবায়নে সাহায্য করার জন্য আপনি ব্যবহার করতে পারেন এমন বেশ কয়েকটি সহজলভ্য সরঞ্জাম রয়েছে।
জেপিজি
আপনি যদি JPG ইমেজ ব্যবহার করে থাকেন, তবে সেখানে বেশ কিছু ছোট পরিবর্তন আপনি করতে পারেন যা সম্ভাব্যভাবে উল্লেখযোগ্য ফাইল-আকার সঞ্চয় প্রদান করে। এর মধ্যে রয়েছে:
- বিভিন্ন এনকোডিং পদ্ধতির মাধ্যমে একটি ছোট ফাইলের আকার তৈরি করা (মানকে প্রভাবিত না করে)।
- ভাল কম্প্রেশন ফলন করার জন্য মান সামান্য সামঞ্জস্য.
এই কৌশলগুলি অনুসরণ করলে প্রায়শই আপনি 25% পর্যন্ত ফাইলের আকার হ্রাস করতে পারেন।
টুল নির্বাচন করার সময়, মনে রাখবেন যে ফটো এক্সপোর্টিং টুলগুলি আপনার ছবিতে অপ্রয়োজনীয় মেটাডেটা, যেমন GPS তথ্য, সন্নিবেশ করতে পারে। ন্যূনতম, আপনার ফাইলগুলি থেকে এই তথ্যটি বের করে আনতে সহায়তা করার জন্য বিদ্যমান সরঞ্জামগুলি ব্যবহার করার চেষ্টা করুন৷
ওয়েবপি
WebP হল একটি নতুন ইমেজ ফরম্যাট যা Android 4.2.1 (API লেভেল 17) থেকে সমর্থিত। এই বিন্যাসটি ওয়েবে চিত্রগুলির জন্য উচ্চতর ক্ষতিহীন এবং ক্ষতিকর কম্প্রেশন প্রদান করে। WebP ব্যবহার করে, বিকাশকারীরা আরও ছোট, সমৃদ্ধ ছবি তৈরি করতে পারে। WebP লসলেস ইমেজ ফাইলগুলি PNGs থেকে গড়ে 26% ছোট । এই চিত্র ফাইলগুলি আরও 22% বেশি বাইটের খরচে স্বচ্ছতা (আলফা চ্যানেল নামেও পরিচিত) সমর্থন করে।
WebP ক্ষতিকারক ছবিগুলি সমতুল্য SSIM মানের সূচকে তুলনীয় JPG ছবির থেকে 25-34% ছোট । যে ক্ষেত্রে ক্ষতিকর RGB কম্প্রেশন গ্রহণযোগ্য, ক্ষতিকারক WebP এছাড়াও স্বচ্ছতা সমর্থন করে, সাধারণত PNG থেকে 3 গুণ ছোট ফাইলের আকার তৈরি করে।
WebP সম্পর্কে আরও তথ্যের জন্য, WebP সাইটে যান।
আপনি Android স্টুডিও ব্যবহার করে বিদ্যমান BMP, JPG, PNG বা স্ট্যাটিক GIF ছবিগুলিকে WebP ফর্ম্যাটে রূপান্তর করতে পারেন। আরও তথ্যের জন্য, অ্যান্ড্রয়েড স্টুডিও ব্যবহার করে ওয়েবপি ছবি তৈরি করুন দেখুন।
একটি বিন্যাস নির্বাচন করা হচ্ছে
বিভিন্ন ইমেজ ফরম্যাট বিভিন্ন ধরনের ছবির জন্য উপযুক্ত। JPG এবং PNG এর খুব আলাদা কম্প্রেশন প্রক্রিয়া রয়েছে এবং তারা বেশ ভিন্ন ফলাফল দেয়।
PNG এবং JPG-এর মধ্যে সিদ্ধান্ত প্রায়ই চিত্রের জটিলতায় নেমে আসে। চিত্র 5 দুটি চিত্র দেখায় যা বিকাশকারী কোন কম্প্রেশন স্কিম প্রয়োগ করে তার উপর নির্ভর করে বেশ ভিন্নভাবে বেরিয়ে আসে। বাম দিকের চিত্রটিতে অনেক ছোট বিবরণ রয়েছে এবং এইভাবে JPG এর সাথে আরও দক্ষতার সাথে সংকুচিত হয়। ডানদিকের ছবিটি, একই রঙের রান সহ, PNG এর সাথে আরও দক্ষতার সাথে সংকুচিত হয়।
একটি বিন্যাস হিসাবে WebP ক্ষতিকারক এবং ক্ষতিহীন উভয় মোডকে সমর্থন করতে পারে, এটি PNG এবং JPG উভয়ের জন্য একটি আদর্শ প্রতিস্থাপন করে। শুধুমাত্র মনে রাখতে হবে যে এটি শুধুমাত্র Android 4.2.1 (API স্তর 17) এবং উচ্চতর চলমান ডিভাইসগুলিতে নেটিভ সমর্থন করে৷ সৌভাগ্যবশত, বেশিরভাগ ডিভাইস সেই প্রয়োজনীয়তা পূরণ করে।
চিত্র 6 আপনাকে কোন কম্প্রেশন স্কিম ব্যবহার করতে হবে তা সিদ্ধান্ত নিতে সাহায্য করার জন্য একটি সহজ ভিজ্যুয়ালাইজেশন প্রদান করে।
সর্বোত্তম মানের মান নির্ধারণ করুন
কম্প্রেশন এবং ছবির মানের মধ্যে সঠিক ভারসাম্য অর্জন করতে আপনি ব্যবহার করতে পারেন এমন বেশ কয়েকটি কৌশল রয়েছে। একটি কৌশল স্কেলার মান ব্যবহার করে এবং তাই শুধুমাত্র JPG এবং WebP এর জন্য কাজ করে। অন্য কৌশলটি Butteraugli লাইব্রেরির সুবিধা নেয় এবং সমস্ত ইমেজ ফরম্যাটের জন্য ব্যবহারযোগ্য।
স্কেলার মান (শুধু JPG এবং WebP)
JPG এবং WebP এর শক্তি এই সত্য থেকে আসে যে আপনি ফাইলের আকারের সাথে গুণমানের ভারসাম্য রাখতে একটি স্কেলার মান ব্যবহার করতে পারেন। কৌশলটি হল আপনার ছবির জন্য সঠিক মানের মান কী তা খুঁজে বের করা। খুব কম একটি মানের স্তর ছবির মানের খরচে একটি ছোট ফাইল তৈরি করে। খুব বেশি মানের স্তর ব্যবহারকারীকে লক্ষণীয় সুবিধা প্রদান না করে ফাইলের আকার বাড়ায়।
সবচেয়ে সহজ সমাধান হল কিছু অ-সর্বোচ্চ মান বাছাই করা এবং সেই মানটি ব্যবহার করা। যাইহোক, সচেতন থাকুন যে গুণমানের মান প্রতিটি ছবিকে ভিন্নভাবে প্রভাবিত করে। যদিও 75% এর গুণমান, উদাহরণস্বরূপ, বেশিরভাগ ছবিতে সূক্ষ্ম দেখাতে পারে, কিছু ক্ষেত্রে ভাল নাও হতে পারে। আপনাকে নিশ্চিত করতে হবে যে আপনার নির্বাচিত সর্বোচ্চ মানটি চিত্রের একটি প্রতিনিধি নমুনার বিপরীতে পরীক্ষা করা উচিত। এছাড়াও, নিশ্চিত করুন যে আপনার সমস্ত পরীক্ষাগুলি মূল চিত্রগুলির বিরুদ্ধে করা হয়েছে, এবং সংকুচিত সংস্করণগুলিতে নয়।
বৃহৎ মিডিয়া অ্যাপ্লিকেশনের জন্য যেগুলি দিনে লক্ষ লক্ষ JPG আপলোড করে এবং পুনরায় পাঠায়, প্রতিটি সম্পদের জন্য হ্যান্ড-টিউনিং অব্যবহারিক৷ আপনি চিত্র বিভাগ অনুযায়ী বিভিন্ন মানের স্তর নির্দিষ্ট করে এই চ্যালেঞ্জটি মোকাবেলা করতে পারেন। উদাহরণস্বরূপ, আপনি থাম্বনেইলের জন্য মানের সেটিং হিসাবে 35% সেট করতে পারেন, যেহেতু একটি ছোট চিত্র আরও কম্প্রেশন আর্টিফ্যাক্ট লুকিয়ে রাখে।
বাটারগালি
Butteraugli প্রকল্প হল একটি লাইব্রেরি যা একটি চিত্রের সাইকোভিজ্যুয়াল ত্রুটির থ্রেশহোল্ড পরীক্ষা করার জন্য: যে বিন্দুতে একজন দর্শক চিত্রের অবক্ষয় লক্ষ্য করতে শুরু করে। অন্য কথায়, এই প্রকল্পটি আপনার সংকুচিত চিত্রটি কতটা বিকৃত তা পরিমাপ করার চেষ্টা করে।
Butteraugli আপনাকে ভিজ্যুয়াল মানের জন্য একটি লক্ষ্য নির্ধারণ করতে এবং তারপর PNG, JPG, WebP ক্ষতিকর, এবং WebP লসলেস কম্প্রেশন চালাতে দেয়। তারপর আপনি ফাইলের আকার এবং Butteraugli স্তরের সেরা ভারসাম্যের চিত্রটি চয়ন করতে পারেন। চিত্র 7 একটি উদাহরণ দেখায় যে কীভাবে ব্যবহারকারীর সমস্যা বুঝতে পারার জন্য ভিজ্যুয়াল বিকৃতি যথেষ্ট বেশি হওয়ার আগে ন্যূনতম JPG মানের স্তর খুঁজে পেতে বাটারউগলি ব্যবহার করা হয়েছিল; ফলাফলটি ফাইলের আকারে প্রায় 65% হ্রাস।
Butteraugli আপনাকে আউটপুট বা ইনপুটের উপর ভিত্তি করে এগিয়ে যেতে দেয়। অর্থাৎ, আপনি একটি ব্যবহারকারীর ফলাফলের চিত্রে লক্ষণীয় বিকৃতি অনুধাবন করার আগে সর্বনিম্ন মানের সেটিংটি সন্ধান করতে পারেন, অথবা আপনি তাদের সম্পর্কিত মানের স্তরগুলি শিখতে চিত্র-বিকৃতি স্তরগুলি পুনরাবৃত্তভাবে সেট করতে পারেন৷
পরিবেশন মাপ
এটি একটি সার্ভারে একটি চিত্রের শুধুমাত্র একটি একক রেজোলিউশন রাখা লোভনীয়। যখন একটি ডিভাইস চিত্রটি অ্যাক্সেস করে, সার্ভারটি সেই একটি রেজোলিউশনে এটি পরিবেশন করে এবং ডিভাইসে ডাউনস্কেলিং ছেড়ে দেয়।
এই সমাধানটি বিকাশকারীর জন্য সুবিধাজনক, তবে ব্যবহারকারীর জন্য সম্ভাব্য বেদনাদায়ক, কারণ সমাধানটি ব্যবহারকারীকে তাদের প্রয়োজনের চেয়ে অনেক বেশি ডেটা ডাউনলোড করতে বাধ্য করে৷ আপনার পরিবর্তে একাধিক আকারের ছবি সংরক্ষণ করা উচিত এবং একটি নির্দিষ্ট ব্যবহারের ক্ষেত্রে সবচেয়ে উপযুক্ত আকারটি পরিবেশন করা উচিত। উদাহরণস্বরূপ, একটি থাম্বনেইলের জন্য, একটি পূর্ণ আকারের সংস্করণ পরিবেশন এবং ডাউনস্কেল করার পরিবর্তে একটি প্রকৃত থাম্বনেইল চিত্র পরিবেশন করা অনেক কম নেটওয়ার্ক ব্যান্ডউইথ খরচ করে
এই পদ্ধতিটি ডাউনলোডের গতির জন্য ভাল, এবং যারা সীমিত বা মিটারযুক্ত ডেটা প্ল্যান ব্যবহার করছেন তাদের জন্য এটি কম ব্যয়বহুল। এভাবে চলতে থাকলে ইমেজ ডিভাইসে এবং মেন মেমরিতে কম জায়গা নেয়। বড় ছবিগুলির ক্ষেত্রে, যেমন 4K ছবিগুলি, এই পদ্ধতিটি ডিভাইসটিকে ছবিগুলি লোড করার আগে পুনরায় আকার দেওয়ার থেকেও বাঁচায়৷
এই পদ্ধতির প্রয়োগ করার জন্য আপনার কাছে সঠিক ক্যাশিং সহ বিভিন্ন রেজোলিউশনে ছবি প্রদানের জন্য একটি ব্যাকএন্ড ইমেজ পরিষেবা থাকা প্রয়োজন। এই কাজটিতে সহায়তা প্রদান করতে পারে এমন বিদ্যমান পরিষেবা রয়েছে৷ উদাহরণস্বরূপ, অ্যাপ ইঞ্জিন ইমেজ রিসাইজিং কার্যকারিতা ইতিমধ্যে ইনস্টল করা আছে।
,বেশিরভাগ ডাউনলোড ট্রাফিক ছবি নিয়ে গঠিত। ফলস্বরূপ, আপনি আপনার ডাউনলোডযোগ্য ছবিগুলিকে যত ছোট করতে পারবেন, আপনার অ্যাপ ব্যবহারকারীদের জন্য তত ভাল নেটওয়ার্ক অভিজ্ঞতা প্রদান করতে পারে। এই পৃষ্ঠাটি ইমেজ ফাইলগুলিকে ছোট এবং আরও নেটওয়ার্ক-বান্ধব করার জন্য নির্দেশিকা প্রদান করে।
ইমেজ ফরম্যাট সম্পর্কে
অ্যান্ড্রয়েড অ্যাপ্লিকেশানগুলি সাধারণত নিম্নলিখিত এক বা একাধিক ফাইল ফর্ম্যাটে ছবি ব্যবহার করে: AVIF, PNG, JPG এবং WebP৷ এই প্রতিটি ফরম্যাটের জন্য, ছবির আকার কমাতে আপনি কিছু পদক্ষেপ নিতে পারেন।
এভিআইএফ
অ্যান্ড্রয়েড 12 (এপিআই লেভেল 31) এবং উচ্চতর সমর্থনকারী ছবি যা AV1 ইমেজ ফাইল ফরম্যাট (AVIF) ব্যবহার করে। AVIF হল AV1 ব্যবহার করে এনকোড করা ছবি এবং সিকোয়েন্সের জন্য একটি ধারক বিন্যাস। AVIF ভিডিও কম্প্রেশন থেকে ইন্ট্রা-ফ্রেম এনকোডেড সামগ্রীর সুবিধা নেয়। পুরানো ইমেজ ফরম্যাট যেমন JPEG এর সাথে তুলনা করলে এটি একই ফাইল সাইজের জন্য ইমেজ কোয়ালিটি নাটকীয়ভাবে উন্নত করে। এই বিন্যাসের সুবিধাগুলি গভীরভাবে দেখার জন্য, জেক আর্চিবল্ডের ব্লগ পোস্টটি দেখুন।
পিএনজি
আপনার পিএনজি ফাইলগুলিকে ছোট করার একটি চাবিকাঠি হল প্রতিটি পিক্সেলের সারিতে ব্যবহৃত অনন্য রঙের সংখ্যা হ্রাস করা যা চিত্রটি অন্তর্ভুক্ত করে। কম রং ব্যবহার করে, আপনি পাইপলাইনের অন্যান্য পর্যায়ে কম্প্রেশন সম্ভাব্যতা উন্নত করেন।
অনন্য রঙের সংখ্যা হ্রাস করা একটি উল্লেখযোগ্য পার্থক্য করে কারণ PNG কম্প্রেশন কার্যকারিতা আংশিকভাবে একটি ডিগ্রীর ফাংশন যেখানে অনুভূমিকভাবে সংলগ্ন পিক্সেল রঙগুলি পরিবর্তিত হয়। এইভাবে, আপনার PNG চিত্রগুলির প্রতিটি সারিতে অনন্য রঙের সংখ্যা হ্রাস করা তাদের ফাইলের আকার হ্রাস করতে সহায়তা করতে পারে।
এই কৌশলটি অনুসরণ করার সিদ্ধান্ত নেওয়ার সময়, আপনার মনে রাখা উচিত যে অনন্য রঙের সংখ্যা কার্যকরভাবে হ্রাস করা ইমেজে ক্ষতিকারক এনকোডিং পর্যায় প্রয়োগ করার সমান। যাইহোক, একটি এনকোডিং টুল একটি আপাতদৃষ্টিতে ছোট ত্রুটি মানুষের চোখে দেখতে কতটা খারাপ তার বিচার করতে পারে না। অতএব, দক্ষ সংকোচন এবং গ্রহণযোগ্য চিত্রের গুণমানের মধ্যে সঠিক ভারসাম্য নিশ্চিত করতে সাহায্য করার জন্য আপনার এই কাজটি ম্যানুয়ালি করা উচিত।
দুটি বিশেষভাবে দরকারী পন্থা রয়েছে যা আপনি নিতে পারেন: সূচীকৃত ফরম্যাটের জন্য চেষ্টা করা এবং ভেক্টর পরিমাপ প্রয়োগ করা।
ইনডেক্স করা ফরম্যাটের জন্য চেষ্টা করুন
রঙ কমানোর যে কোনো প্রচেষ্টা আপনার রঙগুলিকে অপ্টিমাইজ করার চেষ্টা করে শুরু করা উচিত যাতে আপনি চিত্রটিকে PNG হিসাবে রপ্তানি করার সময় INDEXED বিন্যাসটি ব্যবহার করতে পারেন৷ INDEXED রঙ মোড ব্যবহার করার জন্য সর্বোত্তম 256টি রঙ নির্বাচন করে এবং সেই রঙের প্যালেটে সূচকগুলির সাথে সমস্ত পিক্সেল মান প্রতিস্থাপন করে কাজ করে। ফলাফল হল 16 মিলিয়ন (সম্ভাব্য) রঙ থেকে শুধুমাত্র 256 রঙে হ্রাস: 3 (স্বচ্ছতা ছাড়া) বা 4 (স্বচ্ছতা সহ) প্রতি পিক্সেল থেকে 1 বাইট প্রতি পিক্সেল থেকে। এই পরিবর্তন একটি উল্লেখযোগ্য প্রথম ধাপ ফাইল আকার হ্রাস.
চিত্র 1 শো একটি চিত্র এবং তার সূচীযুক্ত বৈকল্পিক দেখায়।
চিত্র 2 চিত্র 1 এ চিত্রটির জন্য রঙ প্যালেট দেখায়:
আপনার ছবিকে প্যালেটেড ইমেজ হিসাবে উপস্থাপন করা ফাইলের আকারকে উল্লেখযোগ্যভাবে উন্নত করার দিকে অনেক দূর এগিয়ে যায়, তাই আপনার বেশিরভাগ ছবি রূপান্তর করা যায় কিনা তা তদন্ত করে দেখা উচিত।
অবশ্যই, প্রতিটি চিত্রকে শুধুমাত্র 256টি রঙ দিয়ে সঠিকভাবে উপস্থাপন করা যায় না। কিছু চিত্র, উদাহরণস্বরূপ, সঠিক দেখতে 257, 310, 512 বা 912 রঙের প্রয়োজন হতে পারে। এই ধরনের ক্ষেত্রে, ভেক্টর কোয়ান্টাইজেশনও সহায়ক হতে পারে।
ভেক্টর কোয়ান্টাইজেশন
একটি সূচীকৃত চিত্র তৈরির প্রক্রিয়াটিকে ভেক্টর কোয়ান্টাইজেশন (VQ) হিসাবে আরও ভালভাবে বর্ণনা করা যেতে পারে। VQ বহুমাত্রিক সংখ্যার জন্য একটি রাউন্ডিং প্রক্রিয়া হিসাবে কাজ করে। এই প্রক্রিয়ায়, আপনার চিত্রের সমস্ত রঙ তাদের মিলের উপর ভিত্তি করে গোষ্ঠীভুক্ত হয়। একটি প্রদত্ত গোষ্ঠীর জন্য, সেই গোষ্ঠীর সমস্ত রঙ একটি একক কেন্দ্র বিন্দু মান দ্বারা প্রতিস্থাপিত হয়, যা সেই ঘরের রঙগুলির জন্য ত্রুটি কমিয়ে দেয় (বা "সাইট" যদি আপনি Voronoi পরিভাষা ব্যবহার করেন)। চিত্র 3-এ, সবুজ বিন্দুগুলি ইনপুট রঙের প্রতিনিধিত্ব করে, এবং লাল বিন্দুগুলি হল কেন্দ্র বিন্দু যা ইনপুট রঙগুলিকে প্রতিস্থাপন করে। প্রতিটি কোষ নীল রেখা দ্বারা আবদ্ধ।
একটি ছবিতে VQ প্রয়োগের ফলাফল অনন্য রঙের সংখ্যা হ্রাস করে, প্রতিটি রঙের গ্রুপকে একটি একক রঙ দিয়ে প্রতিস্থাপন করে যা ভিজ্যুয়াল মানের "বেশ কাছাকাছি"।
এই কৌশলটি আপনাকে আপনার ছবিতে অনন্য রঙের সর্বাধিক সংখ্যা নির্ধারণ করতে দেয়। উদাহরণস্বরূপ, চিত্র 4 একটি তোতার মাথাকে 16.7 মিলিয়ন রঙে (24 বিট প্রতি পিক্সেল, বা bpp) একটি সংস্করণের সাথে দেখায় যা শুধুমাত্র 16 (3 bpp) অনন্য রং ব্যবহার করার অনুমতি দেয়।
অবিলম্বে, আপনি দেখতে পারেন যে মানের একটি ক্ষতি আছে; বেশিরভাগ গ্রেডিয়েন্ট রঙ প্রতিস্থাপন করা হয়েছে, ছবিতে একটি ব্যান্ডিং প্রভাব প্রদান করে। এই চিত্রটির জন্য 16 টিরও বেশি অনন্য রঙের প্রয়োজন।
আপনার পাইপলাইনে একটি VQ ধাপ সেট আপ করা আপনাকে আপনার ইমেজ ব্যবহার করে এমন অনন্য রঙের প্রকৃত সংখ্যা সম্পর্কে আরও ভাল ধারণা পেতে সাহায্য করতে পারে এবং সেগুলি উল্লেখযোগ্যভাবে কমাতে সাহায্য করতে পারে। এই কৌশলটি বাস্তবায়নে সাহায্য করার জন্য আপনি ব্যবহার করতে পারেন এমন বেশ কয়েকটি সহজলভ্য সরঞ্জাম রয়েছে।
জেপিজি
আপনি যদি JPG ইমেজ ব্যবহার করে থাকেন, তবে সেখানে বেশ কিছু ছোট পরিবর্তন আপনি করতে পারেন যা সম্ভাব্যভাবে উল্লেখযোগ্য ফাইল-আকার সঞ্চয় প্রদান করে। এর মধ্যে রয়েছে:
- বিভিন্ন এনকোডিং পদ্ধতির মাধ্যমে একটি ছোট ফাইলের আকার তৈরি করা (মানকে প্রভাবিত না করে)।
- ভাল কম্প্রেশন ফলন করার জন্য মান সামান্য সামঞ্জস্য.
এই কৌশলগুলি অনুসরণ করলে প্রায়শই আপনি 25% পর্যন্ত ফাইলের আকার হ্রাস করতে পারেন।
টুল নির্বাচন করার সময়, মনে রাখবেন যে ফটো এক্সপোর্টিং টুলগুলি আপনার ছবিতে অপ্রয়োজনীয় মেটাডেটা, যেমন GPS তথ্য, সন্নিবেশ করতে পারে। ন্যূনতম, আপনার ফাইলগুলি থেকে এই তথ্যটি বের করে আনতে সহায়তা করার জন্য বিদ্যমান সরঞ্জামগুলি ব্যবহার করার চেষ্টা করুন৷
ওয়েবপি
WebP হল একটি নতুন ইমেজ ফরম্যাট যা Android 4.2.1 (API লেভেল 17) থেকে সমর্থিত। এই বিন্যাসটি ওয়েবে চিত্রগুলির জন্য উচ্চতর ক্ষতিহীন এবং ক্ষতিকর কম্প্রেশন প্রদান করে। WebP ব্যবহার করে, বিকাশকারীরা আরও ছোট, সমৃদ্ধ ছবি তৈরি করতে পারে। WebP লসলেস ইমেজ ফাইলগুলি PNGs থেকে গড়ে 26% ছোট । এই চিত্র ফাইলগুলি আরও 22% বেশি বাইটের খরচে স্বচ্ছতা (আলফা চ্যানেল নামেও পরিচিত) সমর্থন করে।
WebP ক্ষতিকারক ছবিগুলি সমতুল্য SSIM মানের সূচকে তুলনীয় JPG ছবির থেকে 25-34% ছোট । যে ক্ষেত্রে ক্ষতিকর RGB কম্প্রেশন গ্রহণযোগ্য, ক্ষতিকারক WebP এছাড়াও স্বচ্ছতা সমর্থন করে, সাধারণত PNG থেকে 3 গুণ ছোট ফাইলের আকার তৈরি করে।
WebP সম্পর্কে আরও তথ্যের জন্য, WebP সাইটে যান।
আপনি Android স্টুডিও ব্যবহার করে বিদ্যমান BMP, JPG, PNG বা স্ট্যাটিক GIF ছবিগুলিকে WebP ফর্ম্যাটে রূপান্তর করতে পারেন। আরও তথ্যের জন্য, অ্যান্ড্রয়েড স্টুডিও ব্যবহার করে ওয়েবপি ছবি তৈরি করুন দেখুন।
একটি বিন্যাস নির্বাচন করা হচ্ছে
বিভিন্ন ইমেজ ফরম্যাট বিভিন্ন ধরনের ছবির জন্য উপযুক্ত। JPG এবং PNG এর খুব আলাদা কম্প্রেশন প্রক্রিয়া রয়েছে এবং তারা বেশ ভিন্ন ফলাফল দেয়।
PNG এবং JPG-এর মধ্যে সিদ্ধান্ত প্রায়ই চিত্রের জটিলতায় নেমে আসে। চিত্র 5 দুটি চিত্র দেখায় যা বিকাশকারী কোন কম্প্রেশন স্কিম প্রয়োগ করে তার উপর নির্ভর করে বেশ ভিন্নভাবে বেরিয়ে আসে। বাম দিকের চিত্রটিতে অনেক ছোট বিবরণ রয়েছে এবং এইভাবে JPG এর সাথে আরও দক্ষতার সাথে সংকুচিত হয়। ডানদিকের ছবিটি, একই রঙের রান সহ, PNG এর সাথে আরও দক্ষতার সাথে সংকুচিত হয়।
একটি বিন্যাস হিসাবে WebP ক্ষতিকারক এবং ক্ষতিহীন উভয় মোডকে সমর্থন করতে পারে, এটি PNG এবং JPG উভয়ের জন্য একটি আদর্শ প্রতিস্থাপন করে। শুধুমাত্র মনে রাখতে হবে যে এটি শুধুমাত্র Android 4.2.1 (API স্তর 17) এবং উচ্চতর চলমান ডিভাইসগুলিতে নেটিভ সমর্থন করে৷ সৌভাগ্যবশত, বেশিরভাগ ডিভাইস সেই প্রয়োজনীয়তা পূরণ করে।
চিত্র 6 আপনাকে কোন কম্প্রেশন স্কিম ব্যবহার করতে হবে তা সিদ্ধান্ত নিতে সাহায্য করার জন্য একটি সহজ ভিজ্যুয়ালাইজেশন প্রদান করে।
সর্বোত্তম মানের মান নির্ধারণ করুন
কম্প্রেশন এবং ছবির মানের মধ্যে সঠিক ভারসাম্য অর্জন করতে আপনি ব্যবহার করতে পারেন এমন বেশ কয়েকটি কৌশল রয়েছে। একটি কৌশল স্কেলার মান ব্যবহার করে এবং তাই শুধুমাত্র JPG এবং WebP এর জন্য কাজ করে। অন্য কৌশলটি Butteraugli লাইব্রেরির সুবিধা নেয় এবং সমস্ত ইমেজ ফরম্যাটের জন্য ব্যবহারযোগ্য।
স্কেলার মান (শুধু JPG এবং WebP)
JPG এবং WebP এর শক্তি এই সত্য থেকে আসে যে আপনি ফাইলের আকারের সাথে গুণমানের ভারসাম্য রাখতে একটি স্কেলার মান ব্যবহার করতে পারেন। কৌশলটি হল আপনার ছবির জন্য সঠিক মানের মান কী তা খুঁজে বের করা। খুব কম একটি মানের স্তর ছবির মানের খরচে একটি ছোট ফাইল তৈরি করে। খুব বেশি মানের স্তর ব্যবহারকারীকে লক্ষণীয় সুবিধা প্রদান না করে ফাইলের আকার বাড়ায়।
সবচেয়ে সহজ সমাধান হল কিছু অ-সর্বোচ্চ মান বাছাই করা এবং সেই মানটি ব্যবহার করা। যাইহোক, সচেতন থাকুন যে গুণমানের মান প্রতিটি ছবিকে ভিন্নভাবে প্রভাবিত করে। যদিও 75% এর গুণমান, উদাহরণস্বরূপ, বেশিরভাগ ছবিতে সূক্ষ্ম দেখাতে পারে, কিছু ক্ষেত্রে ভাল নাও হতে পারে। আপনাকে নিশ্চিত করতে হবে যে আপনার নির্বাচিত সর্বোচ্চ মানটি চিত্রের একটি প্রতিনিধি নমুনার বিপরীতে পরীক্ষা করা উচিত। এছাড়াও, নিশ্চিত করুন যে আপনার সমস্ত পরীক্ষাগুলি মূল চিত্রগুলির বিরুদ্ধে করা হয়েছে, এবং সংকুচিত সংস্করণগুলিতে নয়।
বৃহৎ মিডিয়া অ্যাপ্লিকেশনের জন্য যেগুলি দিনে লক্ষ লক্ষ JPG আপলোড করে এবং পুনরায় পাঠায়, প্রতিটি সম্পদের জন্য হ্যান্ড-টিউনিং অব্যবহারিক৷ আপনি চিত্র বিভাগ অনুযায়ী বিভিন্ন মানের স্তর নির্দিষ্ট করে এই চ্যালেঞ্জটি মোকাবেলা করতে পারেন। উদাহরণস্বরূপ, আপনি থাম্বনেইলের জন্য মানের সেটিং হিসাবে 35% সেট করতে পারেন, যেহেতু একটি ছোট চিত্র আরও কম্প্রেশন আর্টিফ্যাক্ট লুকিয়ে রাখে।
বাটারগালি
Butteraugli প্রকল্প হল একটি লাইব্রেরি যা একটি চিত্রের সাইকোভিজ্যুয়াল ত্রুটির থ্রেশহোল্ড পরীক্ষা করার জন্য: যে বিন্দুতে একজন দর্শক চিত্রের অবক্ষয় লক্ষ্য করতে শুরু করে। অন্য কথায়, এই প্রকল্পটি আপনার সংকুচিত চিত্রটি কতটা বিকৃত তা পরিমাপ করার চেষ্টা করে।
Butteraugli আপনাকে ভিজ্যুয়াল মানের জন্য একটি লক্ষ্য নির্ধারণ করতে এবং তারপর PNG, JPG, WebP ক্ষতিকর, এবং WebP লসলেস কম্প্রেশন চালাতে দেয়। তারপর আপনি ফাইলের আকার এবং Butteraugli স্তরের সেরা ভারসাম্যের চিত্রটি চয়ন করতে পারেন। চিত্র 7 একটি উদাহরণ দেখায় যে কীভাবে ব্যবহারকারীর সমস্যা বুঝতে পারার জন্য ভিজ্যুয়াল বিকৃতি যথেষ্ট বেশি হওয়ার আগে ন্যূনতম JPG মানের স্তর খুঁজে পেতে বাটারউগলি ব্যবহার করা হয়েছিল; ফলাফলটি ফাইলের আকারে প্রায় 65% হ্রাস।
Butteraugli আপনাকে আউটপুট বা ইনপুটের উপর ভিত্তি করে এগিয়ে যেতে দেয়। অর্থাৎ, আপনি একটি ব্যবহারকারীর ফলাফলের চিত্রে লক্ষণীয় বিকৃতি অনুধাবন করার আগে সর্বনিম্ন মানের সেটিংটি সন্ধান করতে পারেন, অথবা আপনি তাদের সম্পর্কিত মানের স্তরগুলি শিখতে চিত্র-বিকৃতি স্তরগুলি পুনরাবৃত্তভাবে সেট করতে পারেন৷
পরিবেশন মাপ
এটি একটি সার্ভারে একটি চিত্রের শুধুমাত্র একটি একক রেজোলিউশন রাখা লোভনীয়। যখন একটি ডিভাইস চিত্রটি অ্যাক্সেস করে, সার্ভারটি সেই একটি রেজোলিউশনে এটি পরিবেশন করে এবং ডিভাইসে ডাউনস্কেলিং ছেড়ে দেয়।
এই সমাধানটি বিকাশকারীর জন্য সুবিধাজনক, তবে ব্যবহারকারীর জন্য সম্ভাব্য বেদনাদায়ক, কারণ সমাধানটি ব্যবহারকারীকে তাদের প্রয়োজনের চেয়ে অনেক বেশি ডেটা ডাউনলোড করতে বাধ্য করে৷ আপনার পরিবর্তে একাধিক আকারের ছবি সংরক্ষণ করা উচিত এবং একটি নির্দিষ্ট ব্যবহারের ক্ষেত্রে সবচেয়ে উপযুক্ত আকারটি পরিবেশন করা উচিত। উদাহরণস্বরূপ, একটি থাম্বনেইলের জন্য, একটি পূর্ণ আকারের সংস্করণ পরিবেশন এবং ডাউনস্কেল করার পরিবর্তে একটি প্রকৃত থাম্বনেইল চিত্র পরিবেশন করা অনেক কম নেটওয়ার্ক ব্যান্ডউইথ খরচ করে
এই পদ্ধতিটি ডাউনলোডের গতির জন্য ভাল, এবং যারা সীমিত বা মিটারযুক্ত ডেটা প্ল্যান ব্যবহার করছেন তাদের জন্য এটি কম ব্যয়বহুল। এভাবে চলতে থাকলে ইমেজ ডিভাইসে এবং মেন মেমরিতে কম জায়গা নেয়। বড় ছবিগুলির ক্ষেত্রে, যেমন 4K ছবিগুলি, এই পদ্ধতিটি ডিভাইসটিকে ছবিগুলি লোড করার আগে পুনরায় আকার দেওয়ার থেকেও বাঁচায়৷
এই পদ্ধতির প্রয়োগ করার জন্য আপনার কাছে সঠিক ক্যাশিং সহ বিভিন্ন রেজোলিউশনে ছবি প্রদানের জন্য একটি ব্যাকএন্ড ইমেজ পরিষেবা থাকা প্রয়োজন। এই কাজটিতে সহায়তা প্রদান করতে পারে এমন বিদ্যমান পরিষেবা রয়েছে৷ উদাহরণস্বরূপ, অ্যাপ ইঞ্জিন ইমেজ রিসাইজিং কার্যকারিতা ইতিমধ্যে ইনস্টল করা আছে।
,বেশিরভাগ ডাউনলোড ট্রাফিক ছবি নিয়ে গঠিত। ফলস্বরূপ, আপনি আপনার ডাউনলোডযোগ্য ছবিগুলিকে যত ছোট করতে পারবেন, আপনার অ্যাপ ব্যবহারকারীদের জন্য তত ভাল নেটওয়ার্ক অভিজ্ঞতা প্রদান করতে পারে। এই পৃষ্ঠাটি ইমেজ ফাইলগুলিকে ছোট এবং আরও নেটওয়ার্ক-বান্ধব করার জন্য নির্দেশিকা প্রদান করে।
ইমেজ ফরম্যাট সম্পর্কে
অ্যান্ড্রয়েড অ্যাপ্লিকেশানগুলি সাধারণত নিম্নলিখিত এক বা একাধিক ফাইল ফর্ম্যাটে ছবি ব্যবহার করে: AVIF, PNG, JPG এবং WebP৷ এই প্রতিটি ফরম্যাটের জন্য, ছবির আকার কমাতে আপনি কিছু পদক্ষেপ নিতে পারেন।
এভিআইএফ
অ্যান্ড্রয়েড 12 (এপিআই লেভেল 31) এবং উচ্চতর সমর্থনকারী ছবি যা AV1 ইমেজ ফাইল ফরম্যাট (AVIF) ব্যবহার করে। AVIF হল AV1 ব্যবহার করে এনকোড করা ছবি এবং সিকোয়েন্সের জন্য একটি ধারক বিন্যাস। AVIF ভিডিও কম্প্রেশন থেকে ইন্ট্রা-ফ্রেম এনকোডেড সামগ্রীর সুবিধা নেয়। পুরানো ইমেজ ফরম্যাট যেমন JPEG এর সাথে তুলনা করলে এটি একই ফাইল সাইজের জন্য ইমেজ কোয়ালিটি নাটকীয়ভাবে উন্নত করে। এই বিন্যাসের সুবিধাগুলি গভীরভাবে দেখার জন্য, জেক আর্চিবল্ডের ব্লগ পোস্টটি দেখুন।
পিএনজি
আপনার পিএনজি ফাইলগুলিকে ছোট করার একটি চাবিকাঠি হল প্রতিটি পিক্সেলের সারিতে ব্যবহৃত অনন্য রঙের সংখ্যা হ্রাস করা যা চিত্রটি অন্তর্ভুক্ত করে। কম রং ব্যবহার করে, আপনি পাইপলাইনের অন্যান্য পর্যায়ে কম্প্রেশন সম্ভাব্যতা উন্নত করেন।
অনন্য রঙের সংখ্যা হ্রাস করা একটি উল্লেখযোগ্য পার্থক্য করে কারণ PNG কম্প্রেশন কার্যকারিতা আংশিকভাবে একটি ডিগ্রীর ফাংশন যেখানে অনুভূমিকভাবে সংলগ্ন পিক্সেল রঙগুলি পরিবর্তিত হয়। এইভাবে, আপনার PNG চিত্রগুলির প্রতিটি সারিতে অনন্য রঙের সংখ্যা হ্রাস করা তাদের ফাইলের আকার হ্রাস করতে সহায়তা করতে পারে।
এই কৌশলটি অনুসরণ করার সিদ্ধান্ত নেওয়ার সময়, আপনার মনে রাখা উচিত যে অনন্য রঙের সংখ্যা কার্যকরভাবে হ্রাস করা ইমেজে ক্ষতিকারক এনকোডিং পর্যায় প্রয়োগ করার সমান। যাইহোক, একটি এনকোডিং টুল একটি আপাতদৃষ্টিতে ছোট ত্রুটি মানুষের চোখে দেখতে কতটা খারাপ তার বিচার করতে পারে না। অতএব, দক্ষ সংকোচন এবং গ্রহণযোগ্য চিত্রের গুণমানের মধ্যে সঠিক ভারসাম্য নিশ্চিত করতে সাহায্য করার জন্য আপনার এই কাজটি ম্যানুয়ালি করা উচিত।
দুটি বিশেষভাবে দরকারী পন্থা রয়েছে যা আপনি নিতে পারেন: সূচীকৃত ফরম্যাটের জন্য চেষ্টা করা এবং ভেক্টর পরিমাপ প্রয়োগ করা।
ইনডেক্স করা ফরম্যাটের জন্য চেষ্টা করুন
রঙ কমানোর যে কোনো প্রচেষ্টা আপনার রঙগুলিকে অপ্টিমাইজ করার চেষ্টা করে শুরু করা উচিত যাতে আপনি চিত্রটিকে PNG হিসাবে রপ্তানি করার সময় INDEXED বিন্যাসটি ব্যবহার করতে পারেন৷ INDEXED রঙ মোড ব্যবহার করার জন্য সর্বোত্তম 256টি রঙ নির্বাচন করে এবং সেই রঙের প্যালেটে সূচকগুলির সাথে সমস্ত পিক্সেল মান প্রতিস্থাপন করে কাজ করে। ফলাফল হল 16 মিলিয়ন (সম্ভাব্য) রঙ থেকে শুধুমাত্র 256 রঙে হ্রাস: 3 (স্বচ্ছতা ছাড়া) বা 4 (স্বচ্ছতা সহ) প্রতি পিক্সেল থেকে 1 বাইট প্রতি পিক্সেল থেকে। এই পরিবর্তন একটি উল্লেখযোগ্য প্রথম ধাপ ফাইল আকার হ্রাস.
চিত্র 1 শো একটি চিত্র এবং তার সূচীযুক্ত বৈকল্পিক দেখায়।
চিত্র 2 চিত্র 1 এ চিত্রটির জন্য রঙ প্যালেট দেখায়:
আপনার ছবিকে প্যালেটেড ইমেজ হিসাবে উপস্থাপন করা ফাইলের আকারকে উল্লেখযোগ্যভাবে উন্নত করার দিকে অনেক দূর এগিয়ে যায়, তাই আপনার বেশিরভাগ ছবি রূপান্তর করা যায় কিনা তা তদন্ত করে দেখা উচিত।
অবশ্যই, প্রতিটি চিত্রকে শুধুমাত্র 256টি রঙ দিয়ে সঠিকভাবে উপস্থাপন করা যায় না। কিছু চিত্র, উদাহরণস্বরূপ, সঠিক দেখতে 257, 310, 512 বা 912 রঙের প্রয়োজন হতে পারে। এই ধরনের ক্ষেত্রে, ভেক্টর কোয়ান্টাইজেশনও সহায়ক হতে পারে।
ভেক্টর কোয়ান্টাইজেশন
একটি সূচীকৃত চিত্র তৈরির প্রক্রিয়াটিকে ভেক্টর কোয়ান্টাইজেশন (VQ) হিসাবে আরও ভালভাবে বর্ণনা করা যেতে পারে। VQ বহুমাত্রিক সংখ্যার জন্য একটি রাউন্ডিং প্রক্রিয়া হিসাবে কাজ করে। এই প্রক্রিয়ায়, আপনার চিত্রের সমস্ত রঙ তাদের মিলের উপর ভিত্তি করে গোষ্ঠীভুক্ত হয়। একটি প্রদত্ত গোষ্ঠীর জন্য, সেই গোষ্ঠীর সমস্ত রঙ একটি একক কেন্দ্র বিন্দু মান দ্বারা প্রতিস্থাপিত হয়, যা সেই ঘরের রঙগুলির জন্য ত্রুটি কমিয়ে দেয় (বা "সাইট" যদি আপনি Voronoi পরিভাষা ব্যবহার করেন)। চিত্র 3-এ, সবুজ বিন্দুগুলি ইনপুট রঙের প্রতিনিধিত্ব করে, এবং লাল বিন্দুগুলি হল কেন্দ্র বিন্দু যা ইনপুট রঙগুলিকে প্রতিস্থাপন করে। প্রতিটি কোষ নীল রেখা দ্বারা আবদ্ধ।
একটি ছবিতে VQ প্রয়োগের ফলাফল অনন্য রঙের সংখ্যা হ্রাস করে, প্রতিটি রঙের গ্রুপকে একটি একক রঙ দিয়ে প্রতিস্থাপন করে যা ভিজ্যুয়াল মানের "বেশ কাছাকাছি"।
এই কৌশলটি আপনাকে আপনার ছবিতে অনন্য রঙের সর্বাধিক সংখ্যা নির্ধারণ করতে দেয়। উদাহরণস্বরূপ, চিত্র 4 একটি তোতার মাথাকে 16.7 মিলিয়ন রঙে (24 বিট প্রতি পিক্সেল, বা bpp) একটি সংস্করণের সাথে দেখায় যা শুধুমাত্র 16 (3 bpp) অনন্য রং ব্যবহার করার অনুমতি দেয়।
অবিলম্বে, আপনি দেখতে পারেন যে মানের একটি ক্ষতি আছে; বেশিরভাগ গ্রেডিয়েন্ট রঙ প্রতিস্থাপন করা হয়েছে, ছবিতে একটি ব্যান্ডিং প্রভাব প্রদান করে। এই চিত্রটির জন্য 16 টিরও বেশি অনন্য রঙের প্রয়োজন।
আপনার পাইপলাইনে একটি VQ ধাপ সেট আপ করা আপনাকে আপনার ইমেজ ব্যবহার করে এমন অনন্য রঙের প্রকৃত সংখ্যা সম্পর্কে আরও ভাল ধারণা পেতে সাহায্য করতে পারে এবং সেগুলি উল্লেখযোগ্যভাবে কমাতে সাহায্য করতে পারে। এই কৌশলটি বাস্তবায়নে সাহায্য করার জন্য আপনি ব্যবহার করতে পারেন এমন বেশ কয়েকটি সহজলভ্য সরঞ্জাম রয়েছে।
জেপিজি
আপনি যদি JPG ইমেজ ব্যবহার করে থাকেন, তবে সেখানে বেশ কিছু ছোট পরিবর্তন আপনি করতে পারেন যা সম্ভাব্যভাবে উল্লেখযোগ্য ফাইল-আকার সঞ্চয় প্রদান করে। এর মধ্যে রয়েছে:
- বিভিন্ন এনকোডিং পদ্ধতির মাধ্যমে একটি ছোট ফাইলের আকার তৈরি করা (মানকে প্রভাবিত না করে)।
- ভাল কম্প্রেশন ফলন করার জন্য মান সামান্য সামঞ্জস্য.
এই কৌশলগুলি অনুসরণ করলে প্রায়শই আপনি 25% পর্যন্ত ফাইলের আকার হ্রাস করতে পারেন।
টুল নির্বাচন করার সময়, মনে রাখবেন যে ফটো এক্সপোর্টিং টুলগুলি আপনার ছবিতে অপ্রয়োজনীয় মেটাডেটা, যেমন GPS তথ্য, সন্নিবেশ করতে পারে। ন্যূনতম, আপনার ফাইলগুলি থেকে এই তথ্যটি বের করে আনতে সহায়তা করার জন্য বিদ্যমান সরঞ্জামগুলি ব্যবহার করার চেষ্টা করুন৷
ওয়েবপি
WebP হল একটি নতুন ইমেজ ফরম্যাট যা Android 4.2.1 (API লেভেল 17) থেকে সমর্থিত। এই বিন্যাসটি ওয়েবে চিত্রগুলির জন্য উচ্চতর ক্ষতিহীন এবং ক্ষতিকর কম্প্রেশন প্রদান করে। WebP ব্যবহার করে, বিকাশকারীরা আরও ছোট, সমৃদ্ধ ছবি তৈরি করতে পারে। WebP লসলেস ইমেজ ফাইলগুলি PNGs থেকে গড়ে 26% ছোট । এই চিত্র ফাইলগুলি আরও 22% বেশি বাইটের খরচে স্বচ্ছতা (আলফা চ্যানেল নামেও পরিচিত) সমর্থন করে।
WebP ক্ষতিকারক ছবিগুলি সমতুল্য SSIM মানের সূচকে তুলনীয় JPG ছবির থেকে 25-34% ছোট । যে ক্ষেত্রে ক্ষতিকর RGB কম্প্রেশন গ্রহণযোগ্য, ক্ষতিকারক WebP এছাড়াও স্বচ্ছতা সমর্থন করে, সাধারণত PNG থেকে 3 গুণ ছোট ফাইলের আকার তৈরি করে।
WebP সম্পর্কে আরও তথ্যের জন্য, WebP সাইটে যান।
আপনি Android স্টুডিও ব্যবহার করে বিদ্যমান BMP, JPG, PNG বা স্ট্যাটিক GIF ছবিগুলিকে WebP ফর্ম্যাটে রূপান্তর করতে পারেন। আরও তথ্যের জন্য, অ্যান্ড্রয়েড স্টুডিও ব্যবহার করে ওয়েবপি ছবি তৈরি করুন দেখুন।
একটি বিন্যাস নির্বাচন করা হচ্ছে
বিভিন্ন ইমেজ ফরম্যাট বিভিন্ন ধরনের ছবির জন্য উপযুক্ত। JPG এবং PNG এর খুব আলাদা কম্প্রেশন প্রক্রিয়া রয়েছে এবং তারা বেশ ভিন্ন ফলাফল দেয়।
PNG এবং JPG-এর মধ্যে সিদ্ধান্ত প্রায়ই চিত্রের জটিলতায় নেমে আসে। চিত্র 5 দুটি চিত্র দেখায় যা বিকাশকারী কোন কম্প্রেশন স্কিম প্রয়োগ করে তার উপর নির্ভর করে বেশ ভিন্নভাবে বেরিয়ে আসে। বাম দিকের চিত্রটিতে অনেক ছোট বিবরণ রয়েছে এবং এইভাবে JPG এর সাথে আরও দক্ষতার সাথে সংকুচিত হয়। ডানদিকের ছবিটি, একই রঙের রান সহ, PNG এর সাথে আরও দক্ষতার সাথে সংকুচিত হয়।
একটি বিন্যাস হিসাবে WebP ক্ষতিকারক এবং ক্ষতিহীন উভয় মোডকে সমর্থন করতে পারে, এটি PNG এবং JPG উভয়ের জন্য একটি আদর্শ প্রতিস্থাপন করে। শুধুমাত্র মনে রাখতে হবে যে এটি শুধুমাত্র Android 4.2.1 (API স্তর 17) এবং উচ্চতর চলমান ডিভাইসগুলিতে নেটিভ সমর্থন করে৷ সৌভাগ্যবশত, বেশিরভাগ ডিভাইস সেই প্রয়োজনীয়তা পূরণ করে।
চিত্র 6 আপনাকে কোন কম্প্রেশন স্কিম ব্যবহার করতে হবে তা সিদ্ধান্ত নিতে সাহায্য করার জন্য একটি সহজ ভিজ্যুয়ালাইজেশন প্রদান করে।
সর্বোত্তম মানের মান নির্ধারণ করুন
কম্প্রেশন এবং ছবির মানের মধ্যে সঠিক ভারসাম্য অর্জন করতে আপনি ব্যবহার করতে পারেন এমন বেশ কয়েকটি কৌশল রয়েছে। একটি কৌশল স্কেলার মান ব্যবহার করে এবং তাই শুধুমাত্র JPG এবং WebP এর জন্য কাজ করে। অন্য কৌশলটি Butteraugli লাইব্রেরির সুবিধা নেয় এবং সমস্ত ইমেজ ফরম্যাটের জন্য ব্যবহারযোগ্য।
স্কেলার মান (শুধু JPG এবং WebP)
JPG এবং WebP এর শক্তি এই সত্য থেকে আসে যে আপনি ফাইলের আকারের সাথে গুণমানের ভারসাম্য রাখতে একটি স্কেলার মান ব্যবহার করতে পারেন। কৌশলটি হল আপনার ছবির জন্য সঠিক মানের মান কী তা খুঁজে বের করা। খুব কম একটি মানের স্তর ছবির মানের খরচে একটি ছোট ফাইল তৈরি করে। খুব বেশি মানের স্তর ব্যবহারকারীকে লক্ষণীয় সুবিধা প্রদান না করে ফাইলের আকার বাড়ায়।
সবচেয়ে সহজ সমাধান হল কিছু অ-সর্বোচ্চ মান বাছাই করা এবং সেই মানটি ব্যবহার করা। যাইহোক, সচেতন থাকুন যে গুণমানের মান প্রতিটি ছবিকে ভিন্নভাবে প্রভাবিত করে। যদিও 75% এর গুণমান, উদাহরণস্বরূপ, বেশিরভাগ ছবিতে সূক্ষ্ম দেখাতে পারে, কিছু ক্ষেত্রে ভাল নাও হতে পারে। আপনাকে নিশ্চিত করতে হবে যে আপনার নির্বাচিত সর্বোচ্চ মানটি চিত্রের একটি প্রতিনিধি নমুনার বিপরীতে পরীক্ষা করা উচিত। এছাড়াও, নিশ্চিত করুন যে আপনার সমস্ত পরীক্ষাগুলি মূল চিত্রগুলির বিরুদ্ধে করা হয়েছে, এবং সংকুচিত সংস্করণগুলিতে নয়।
বৃহৎ মিডিয়া অ্যাপ্লিকেশনের জন্য যেগুলি দিনে লক্ষ লক্ষ JPG আপলোড করে এবং পুনরায় পাঠায়, প্রতিটি সম্পদের জন্য হ্যান্ড-টিউনিং অব্যবহারিক৷ আপনি চিত্র বিভাগ অনুযায়ী বিভিন্ন মানের স্তর নির্দিষ্ট করে এই চ্যালেঞ্জটি মোকাবেলা করতে পারেন। উদাহরণস্বরূপ, আপনি থাম্বনেইলের জন্য মানের সেটিং হিসাবে 35% সেট করতে পারেন, যেহেতু একটি ছোট চিত্র আরও কম্প্রেশন আর্টিফ্যাক্ট লুকিয়ে রাখে।
বাটারগালি
Butteraugli প্রকল্প হল একটি লাইব্রেরি যা একটি চিত্রের সাইকোভিজ্যুয়াল ত্রুটির থ্রেশহোল্ড পরীক্ষা করার জন্য: যে বিন্দুতে একজন দর্শক চিত্রের অবক্ষয় লক্ষ্য করতে শুরু করে। অন্য কথায়, এই প্রকল্পটি আপনার সংকুচিত চিত্রটি কতটা বিকৃত তা পরিমাপ করার চেষ্টা করে।
Butteraugli আপনাকে ভিজ্যুয়াল মানের জন্য একটি লক্ষ্য নির্ধারণ করতে এবং তারপর PNG, JPG, WebP ক্ষতিকর, এবং WebP লসলেস কম্প্রেশন চালাতে দেয়। তারপর আপনি ফাইলের আকার এবং Butteraugli স্তরের সেরা ভারসাম্যের চিত্রটি চয়ন করতে পারেন। চিত্র 7 একটি উদাহরণ দেখায় যে কীভাবে ব্যবহারকারীর সমস্যা বুঝতে পারার জন্য ভিজ্যুয়াল বিকৃতি যথেষ্ট বেশি হওয়ার আগে ন্যূনতম JPG মানের স্তর খুঁজে পেতে বাটারউগলি ব্যবহার করা হয়েছিল; ফলাফলটি ফাইলের আকারে প্রায় 65% হ্রাস।
Butteraugli আপনাকে আউটপুট বা ইনপুটের উপর ভিত্তি করে এগিয়ে যেতে দেয়। অর্থাৎ, আপনি একটি ব্যবহারকারীর ফলাফলের চিত্রে লক্ষণীয় বিকৃতি অনুধাবন করার আগে সর্বনিম্ন মানের সেটিংটি সন্ধান করতে পারেন, অথবা আপনি তাদের সম্পর্কিত মানের স্তরগুলি শিখতে চিত্র-বিকৃতি স্তরগুলি পুনরাবৃত্তভাবে সেট করতে পারেন৷
পরিবেশন মাপ
এটি একটি সার্ভারে একটি চিত্রের শুধুমাত্র একটি একক রেজোলিউশন রাখা লোভনীয়। যখন একটি ডিভাইস চিত্রটি অ্যাক্সেস করে, সার্ভারটি সেই একটি রেজোলিউশনে এটি পরিবেশন করে এবং ডিভাইসে ডাউনস্কেলিং ছেড়ে দেয়।
এই সমাধানটি বিকাশকারীর জন্য সুবিধাজনক, তবে ব্যবহারকারীর জন্য সম্ভাব্য বেদনাদায়ক, কারণ সমাধানটি ব্যবহারকারীকে তাদের প্রয়োজনের চেয়ে অনেক বেশি ডেটা ডাউনলোড করতে বাধ্য করে৷ আপনার পরিবর্তে একাধিক আকারের ছবি সংরক্ষণ করা উচিত এবং একটি নির্দিষ্ট ব্যবহারের ক্ষেত্রে সবচেয়ে উপযুক্ত আকারটি পরিবেশন করা উচিত। উদাহরণস্বরূপ, একটি থাম্বনেইলের জন্য, একটি পূর্ণ আকারের সংস্করণ পরিবেশন এবং ডাউনস্কেল করার পরিবর্তে একটি প্রকৃত থাম্বনেইল চিত্র পরিবেশন করা অনেক কম নেটওয়ার্ক ব্যান্ডউইথ খরচ করে
এই পদ্ধতিটি ডাউনলোডের গতির জন্য ভাল, এবং যারা সীমিত বা মিটারযুক্ত ডেটা প্ল্যান ব্যবহার করছেন তাদের জন্য এটি কম ব্যয়বহুল। এভাবে চলতে থাকলে ইমেজ ডিভাইসে এবং মেন মেমরিতে কম জায়গা নেয়। বড় ছবিগুলির ক্ষেত্রে, যেমন 4K ছবিগুলি, এই পদ্ধতিটি ডিভাইসটিকে ছবিগুলি লোড করার আগে পুনরায় আকার দেওয়ার থেকেও বাঁচায়৷
এই পদ্ধতির প্রয়োগ করার জন্য আপনার কাছে সঠিক ক্যাশিং সহ বিভিন্ন রেজোলিউশনে ছবি প্রদানের জন্য একটি ব্যাকএন্ড ইমেজ পরিষেবা থাকা প্রয়োজন। এই কাজটিতে সহায়তা প্রদান করতে পারে এমন বিদ্যমান পরিষেবা রয়েছে৷ উদাহরণস্বরূপ, অ্যাপ ইঞ্জিন ইমেজ রিসাইজিং কার্যকারিতা ইতিমধ্যে ইনস্টল করা আছে।