QOI (image format)
কুইট ওকে ইমেজ ফরম্যাট (কিউওআই) হল 24-বিট (রঙ আরজিবি প্রতি 8 বিট) বা 32-বিট (8-বিট আলফা চ্যানেল আরজিবিএ সহ রঙ প্রতি 8 বিট) রঙিন রাস্টার (বিটম্যাপ করা) চিত্রের ক্ষতিহীন চিত্র সংকোচনের জন্য একটি নির্দিষ্টকরণ, যা ডমিনিক স্জাবলুস্কি দ্বারা উদ্ভাবিত এবং 24 নভেম্বর 2021-এ প্রথম ঘোষণা করা হয়েছিল। বিবরণ উদ্দেশ্য ছিল একটি ওপেন সোর্স লসলেস কম্প্রেশন পদ্ধতি তৈরি করা, যা পিএনজির চেয়ে দ্রুত এবং বাস্তবায়ন করা সহজ ছিল। একটি তৃতীয় পক্ষের ইউটিউব ভিডিও ব্যাখ্যা করে যে কীভাবে পি. এন. জি এবং কিউ. ও. আই সংকোচন করা হয়। ঘোষণা এবং ভিডিওতে নির্দিষ্ট করা পরিসংখ্যানগুলি একই আকারের ফাইল সহ পিএনজির তুলনায় কুড়ি থেকে পঞ্চাশ গুণ দ্রুত এনকোডিং এবং তিন থেকে চার গুণ দ্রুত ডিকোডিং গতি দাবি করে। লেখক এই নির্দিষ্টকরণটি পাবলিক ডোমেইনে (সিসি0) দান করেছেন। সফ্টওয়্যার এবং ভাষা সমর্থন কিউওআই ইমেজম্যাজিক, ইরফানভিউ (সংস্করণ 4.60 হিসাবে), এফএফএমপিইজি (সংস্করণ 5.1 হিসাবে), এবং গ্রাফিক কনভার্টার (v11.8 +) দ্বারা স্থানীয়ভাবে সমর্থিত। কমিউনিটি তৈরি প্লাগইনগুলি জিআইএমপি, Paint.NET এবং এক্সএনভিউ এমপিতে পাওয়া যায়। এছাড়াও বিভিন্ন ভাষার জন্য বাস্তবায়ন রয়েছে যেমন রাস্ট, পাইথন, জাভা, সি + +, সি #এবং আরও অনেক কিছু। প্রকল্পের গিট (হাব) রিপোজিটরি আর. ই. ডি. এম. ই-তে একটি সম্পূর্ণ তালিকা পাওয়া যাবে। ফাইল ফরম্যাট হেডার একটি কিউওআই ফাইল একটি 14-বাইটের হেডার নিয়ে গঠিত, যার পরে যে কোনও সংখ্যক ডেটা "অংশ" এবং একটি 8-বাইটের শেষ চিহ্নিতকারী থাকে। qoi _ হেডার {চার ম্যাজিক [4];// ম্যাজিক বাইট "qoiif" uint32 _ t প্রস্থ;// পিক্সেলে ছবির প্রস্থ (বিই) uint32 _ t উচ্চতা;// পিক্সেলে ছবির উচ্চতা (বিই) uint8 _ t চ্যানেল;// 3 = আরজিবি, 4 = আরজিবিএ uint8 _ t কালারস্পেস;// 0 = রৈখিক আলফা// 1 = সমস্ত চ্যানেল রৈখিক সহ এসআরজিবি; কালারস্পেস এবং চ্যানেল ক্ষেত্রগুলি সম্পূর্ণরূপে তথ্যমূলক। তারা ডেটা অংশগুলি এনকোড করার পদ্ধতি পরিবর্তন করে না। এনকোডিং চিত্রগুলি সারিতে সারিতে, বাম থেকে ডান, উপরে থেকে নীচে এনকোড করা হয়। ডিকোডার এবং এনকোডার পূর্ববর্তী পিক্সেল মান দিয়ে শুরু হয়। একটি ছবি সম্পূর্ণ হয় যখন দ্বারা নির্দিষ্ট সমস্ত পিক্সেল আচ্ছাদিত করা হয়। পিক্সেলগুলি এনকোড করা হয় এইভাবেঃ পূর্ববর্তী পিক্সেলের রান-দৈর্ঘ্য এনকোডিং () পূর্বে দেখা পিক্সেলের অ্যারেতে একটি সূচক () r, g, b (বা) পূর্ণ r, g, b বা r, g, b, একটি মান (বা) রঙিন চ্যানেলগুলি আলফা চ্যানেলের ("আন-প্রিমপ্লিটাইড আলফা") সাথে প্রাকগুণিত হবে না বলে ধরে নেওয়া হয়। পূর্বে দেখা পিক্সেল মানগুলির একটি চলমান (শূন্য-প্রারম্ভিক) এনকোডার এবং ডিকোডার দ্বারা রক্ষণাবেক্ষণ করা হয়। এনকোডার এবং ডিকোডার দ্বারা দেখা প্রতিটি পিক্সেল রঙ মানের একটি হ্যাশ ফাংশন দ্বারা গঠিত অবস্থানে এই অ্যারেতে রাখা হয়। এনকোডার-এ, যদি সূচকে পিক্সেলের মান বর্তমান পিক্সেলের সাথে মেলে, তবে এই সূচকের অবস্থানটি স্ট্রিম হিসাবে লেখা হয়। সূচকের জন্য হ্যাশ ফাংশনটি হলঃ অনুক্রমণিকা অবস্থান = (r * 3 + g * 5 + b * 7 + a * 11)% 64 প্রতিটি অংশ 2-বা 8-বিট ট্যাগ দিয়ে শুরু হয়, তারপরে বেশ কয়েকটি ডেটা বিট থাকে। খণ্ডগুলির বিট দৈর্ঘ্য 8-দ্বারা বিভাজ্য। সমস্ত অংশগুলি বাইটে সারিবদ্ধ। এই ডেটা বিটগুলিতে এনকোড করা সমস্ত মানগুলির বাম দিকে সবচেয়ে উল্লেখযোগ্য বিট রয়েছে। 8-বিট ট্যাগগুলির 2-বিট ট্যাগের চেয়ে অগ্রাধিকার রয়েছে। একটি ডিকোডারকে অবশ্যই প্রথমে একটি 8-বিট ট্যাগের উপস্থিতি পরীক্ষা করতে হবে। বাইট প্রবাহের প্রান্তটি 7টি বাইট দ্বারা চিহ্নিত করা হয় এবং তারপরে একটি একক বাইট থাকে। সম্ভাব্য অংশগুলি হলঃ 8-বিট ট্যাগ (254) 8-বিট লাল চ্যানেল মান 8-বিট সবুজ চ্যানেল মান 8-বিট নীল চ্যানেল মান আলফা মান পূর্ববর্তী পিক্সেল থেকে অপরিবর্তিত থাকে। 8-বিট ট্যাগ (255) 8-বিট লাল চ্যানেল মান 8-বিট সবুজ চ্যানেল মান 8-বিট নীল চ্যানেল মান 8-বিট আলফা চ্যানেল মান 2-বিট ট্যাগ 6-বিট সূচক রঙ সূচক অ্যারেতেঃ একটি বৈধ এনকোডার অবশ্যই একই সূচকে পরপর 2 বা ততোধিক অংশ জারি করবে না। পরিবর্তে ব্যবহার করা উচিত। পূর্ববর্তী পিক্সেল থেকে 2-বিট ট্যাগ 2-বিট লাল চ্যানেলের পার্থক্য পূর্ববর্তী পিক্সেল 2-বিট সবুজ চ্যানেলের পার্থক্য পূর্ববর্তী পিক্সেল থেকে 2-বিট নীল চ্যানেলের পার্থক্য বর্তমান চ্যানেলের মানগুলির মধ্যে পার্থক্য একটি মোড়ক অপারেশন ব্যবহার করছে, তাই এর ফলাফল হবে 255, যেখানে ফলাফল হবে 0। মানগুলি 2-এর পক্ষপাত সহ স্বাক্ষরহীন পূর্ণসংখ্যা হিসাবে সংরক্ষণ করা হয়। ই. জি। −2 কে 0 () হিসাবে সংরক্ষণ করা হয়। 1 কে 3 () হিসাবে সংরক্ষণ করা হয়। আলফা মান পূর্ববর্তী পিক্সেল থেকে অপরিবর্তিত থাকে। 2-বিট ট্যাগ 6-বিট সবুজ চ্যানেল পার্থক্য আগের পিক্সেল 4-বিট লাল চ্যানেল পার্থক্য বিয়োগ সবুজ চ্যানেল পার্থক্য 4-বিট নীল চ্যানেল পার্থক্য বিয়োগ সবুজ চ্যানেল পার্থক্য সবুজ চ্যানেল পরিবর্তনের সাধারণ দিক নির্দেশ করতে ব্যবহৃত হয় এবং 6 বিট এনকোড করা হয়। লাল এবং নীল চ্যানেলগুলি (ডি. আর এবং ডি. বি) সবুজ চ্যানেলের পার্থক্যের উপর ভিত্তি করে। আই. ই. : dr _ dg = (cur_px.r-prev_px.r)-(cur_px.g-prev_px.g) db _ dg = (cur_px.b-prev_px.b)-(cur_px.g-prev_px.g) বর্তমান চ্যানেলের মানগুলির মধ্যে পার্থক্য একটি মোড়ক অপারেশন ব্যবহার করছে, তাই ফলাফল হবে 253, এবং ফলাফল হবে 1। সবুজ চ্যানেলের জন্য 32-এর পক্ষপাত এবং লাল ও নীল চ্যানেলের জন্য 8-এর পক্ষপাত সহ মানগুলি স্বাক্ষরহীন পূর্ণসংখ্যা হিসাবে সংরক্ষণ করা হয়। আলফা মান পূর্ববর্তী পিক্সেল থেকে অপরিবর্তিত থাকে। 2-বিট ট্যাগ 6-বিট রান-দৈর্ঘ্য পূর্ববর্তী পিক্সেলের পুনরাবৃত্তি রান-দৈর্ঘ্য −1 এর পক্ষপাতের সাথে সংরক্ষণ করা হয়। লক্ষ্য করুন যে রান দৈর্ঘ্য 63 এবং 64 (এবং) অবৈধ কারণ তারা এবং ট্যাগ দ্বারা দখল করা হয়। রেফারেন্স বাহ্যিক লিঙ্ক ফরম্যাট ওয়েবসাইটঃ সি সোর্স কোড এবং বেঞ্চমার্ক ফলাফল 1 পৃষ্ঠা পিডিএফ নির্দিষ্টকরণ গিটহাব সংগ্রহস্থল (সি বাস্তবায়ন সহ) 2021 গ্রাফিক্স মানগুলিতে কম্পিউটার সম্পর্কিত ভূমিকা চিত্র সংকোচন ওপেন ফর্ম্যাট রাস্টার গ্রাফিক্স ফাইল ফর্ম্যাট