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 چوڑائی ؛// پکسلز میں تصویر کی چوڑائی (BE) uint32 _ t اونچائی ؛// پکسلز میں تصویر کی اونچائی (BE) uint8 _ t چینلز ؛// 3 = RGB، 4 = RGBA uint8 _ t کلرسپیس ؛// 0 = sRGB لکیری الفا// 1 = تمام چینلز لکیری کے ساتھ ؛ کلرسپیس اور چینل فیلڈز خالصتا معلوماتی ہیں۔ وہ ڈیٹا کے حصوں کو انکوڈ کرنے کے طریقے کو تبدیل نہیں کرتے ہیں۔ انکوڈنگ امیجز کو صف در صف، بائیں سے دائیں، اوپر سے نیچے تک انکوڈ کیا جاتا ہے۔ ڈیکوڈر اور انکوڈر پچھلے پکسل ویلیو سے شروع ہوتا ہے۔ ایک تصویر اس وقت مکمل ہوتی ہے جب اس کے ذریعے متعین تمام پکسلز کا احاطہ کیا جاتا ہے۔ پکسلز کو اس طرح انکوڈ کیا جاتا ہے: پچھلے پکسل کی رن لمبائی انکوڈنگ () پہلے دیکھے گئے پکسلز کی صف میں ایک انڈیکس () r، g، b (یا) فل r، g، b یا r، g، b، a ویلیوز (یا) میں پچھلے پکسل ویلیو کے مقابلے میں فرق (یا) رنگین چینلز کو الفا چینل ("غیر ضرب شدہ الفا") کے ساتھ قبل از وقت نہیں سمجھا جاتا ہے۔ اینکوڈر اور ڈیکوڈر کے ذریعے پہلے دیکھے گئے پکسل ویلیوز کا چلنا (صفر-ابتدائی) برقرار رکھا جاتا ہے۔ ہر پکسل جو انکوڈر اور ڈیکوڈر کے ذریعہ دیکھا جاتا ہے اس صف میں رنگین قدر کے ہیش فنکشن کے ذریعہ تشکیل شدہ پوزیشن پر رکھا جاتا ہے۔ انکوڈر میں، اگر انڈیکس پر پکسل ویلیو موجودہ پکسل سے میل کھاتی ہے، تو یہ انڈیکس پوزیشن اسٹریم پر اس طرح لکھی جاتی ہے۔ انڈیکس کے لیے ہیش فنکشن یہ ہے: انڈیکس _ پوزیشن = (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 بٹس میں انکوڈ کیا جاتا ہے۔ سرخ اور نیلے چینل (ڈی آر اور ڈی بی) سبز چینل کے فرق کی بنیاد رکھتے ہیں۔ I. e. : 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 کے گرافکس معیارات میں کمپیوٹر سے متعلق تعارف امیج کمپریشن اوپن فارمیٹس رسٹر گرافکس فائل فارمیٹس