QOI (image format)
ક્વિટ ઓકે ઇમેજ ફોર્મેટ (ક્યુ. ઓ. આઇ.) એ 24-બીટ (રંગ આર. જી. બી. દીઠ 8 બિટ્સ) અથવા 32-બીટ (8-બીટ આલ્ફા ચેનલ આર. જી. બી. એ. સાથે રંગ દીઠ 8 બિટ્સ) કલર રાસ્ટર (બિટમેપ્ડ) છબીઓના લોસલેસ ઇમેજ કમ્પ્રેશન માટેનું સ્પષ્ટીકરણ છે, જેની શોધ ડોમિનિક સ્ઝેબ્લેવ્સ્કી દ્વારા કરવામાં આવી હતી અને તેની જાહેરાત 24 નવેમ્બર 2021ના રોજ કરવામાં આવી હતી. વર્ણન હેતુ એક ઓપન સોર્સ લોસલેસ કમ્પ્રેશન પદ્ધતિ બનાવવાનો હતો, જે પી. એન. જી. કરતાં ઝડપી અને અમલમાં મૂકવા માટે સરળ હતી. તૃતીય પક્ષ યુટ્યુબ વિડિયો સમજાવે છે કે PNG અને QOI સંકોચન કેવી રીતે કરવામાં આવે છે. જાહેરાત અને વિડિયોમાં ઉલ્લેખિત આંકડાઓ સમાન ફાઇલ કદ સાથે પી. એન. જી. ની સરખામણીમાં વીસથી પચાસ ગણી ઝડપી એન્કોડિંગ અને ત્રણથી ચાર ગણી ઝડપી ડીકોડિંગ ઝડપનો દાવો કરે છે. લેખકે સ્પષ્ટીકરણ જાહેર ડોમેન (CC0) ને દાનમાં આપ્યું છે. સોફ્ટવેર અને ભાષા આધાર ક્યુ. ઓ. આઇ. ને મૂળ રૂપે ઈમેજમેજિક, ઇરફાનવ્યૂ (આવૃત્તિ 4.60 મુજબ), એફ. એફ. એમ. પી. ઈ. જી. (આવૃત્તિ 5.1 મુજબ), અને ગ્રાફિક કન્વર્ટર (v11.8 +) દ્વારા ટેકો આપવામાં આવે છે. સમુદાય નિર્મિત પ્લગઈનો GIMP, Paint.NET અને XnVવ્યૂ MPમાં ઉપલબ્ધ છે. રસ્ટ, પાયથોન, જાવા, સી + +, સી #અને વધુ જેવી વિવિધ ભાષાઓ માટે પણ અમલીકરણ છે. સંપૂર્ણ યાદી પ્રોજેક્ટના ગિટ (હબ) રીપોઝીટરી README પર મળી શકે છે. ફાઇલ ફોર્મેટ હેડર એ ક્યુ. ઓ. આઇ. ફાઇલમાં 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 ગ્રાફિક્સ ધોરણોમાં કમ્પ્યુટર-સંબંધિત પરિચય છબી સંકોચન ઓપન ફોર્મેટ રાસ્ટર ગ્રાફિક્સ ફાઇલ ફોર્મેટ