[Powered by Google Translate] [Walkthrough - પ્રોબ્લેમ 4 સમૂહ] [Zamyla ચાન - હાર્વર્ડ યુનિવર્સિટી] [આ CS50 છે. - CS50.TV] અધિકાર છે. હેલો, દરેકને, અને 4 Walkthrough સ્વાગત છે. આજે અમારા pset ફોરેન્સિક્સ છે. વિદેશી ખરેખર મજા pset કે બીટમેપ ફાઇલો સાથે વ્યવહાર કરવામાં આવે છે છે શોધવા માટે જે એક અપરાધ. પછી અમે કેટલાક બીટમેપ ફાઇલો માપ બદલવા જઈ રહ્યાં છો, તો પછી અમે પણ ખરેખર મજા પુનર્પ્રાપ્ત કહેવાય ભાગ સાથે વ્યવહાર જઈ રહ્યાં છો, જેમાં અમે મૂળભૂત રીતે મેમરી કાર્ડ આપ્યો રહ્યાં છો જેમાં કોઇએ અકસ્માતે તેમના તમામ ફાઇલો કાઢી નાખી છે, અને અમે તે ફાઈલો પુનઃપ્રાપ્ત પૂછવામાં કરી રહ્યાં છો. પરંતુ પ્રથમ, તે પહેલાં અમે pset પ્રવેશ મેળવવા, હું ખરેખર માત્ર દરેકને અભિનંદન કરવા માંગો છો. અમે આ કોર્સ ઓફ મિડપોઇન્ટ અંતે વિશે છો. ક્વિઝ 0 અમને પાછળ છે, અને અમે pset4 પર છો, તેથી અનિવાર્યપણે, અમે હાફવે છો. અમે લાંબા માર્ગ આવ્યો છે જો તમે તમારા psets, pset0 અને pset1 પાછા જુઓ, જેથી પોતાને કે લગભગ અભિનંદન, અને અમે કેટલાક ખરેખર મજા સામગ્રી પ્રવેશ મેળવવા જઈ રહ્યાં છો. તેથી આ pset માટે અમારા શોધો, ફરીથી, તેના બદલે sudo સુધારા માટે yum-y ચાલી, અમે ફક્ત update50 રન કરવાનો છો જો તમે 17.3 આવૃત્તિ અને સાધન ની ઉપર અંતે છો. તેથી update50 સ્કોર ખાતરી કરો - તે ખૂબ સરળ છે, થોડા ઓછા અક્ષરો છે - ખાતરી કરવા માટે કે જે તમે સાધન ની તાજેતરની આવૃત્તિ પર છો તેની ખાતરી કરો. ખાસ કરીને તે update50 માટે મહત્વપૂર્ણ છે જ્યારે અમે CS50 તપાસ ઉપયોગ શરૂ કરો. જેથી ખાતરી કરો કે જે તમને શું બનાવે છે. આ pset માટે વિભાગો તમામ માટે, અમે ફાઈલ ઇનપુટ્સ અને આઉટપુટ સાથે વ્યવહાર કરવામાં જઈ રહ્યાં છો ફાઇલ I / ઓ અમે કાર્યક્રમો કે જે એરે સાથે વ્યવહાર ઘણો ઉપર જઈને કરી રહ્યા છીએ ફાઈલો અને કે જેવી બાબતો તરફ ઇશારો, તેથી અમે ખાતરી કરવા માટે કે આપણે ખરેખર પરિચિત અને આરામદાયક છો બનાવવા માંગો છો અને ફાઇલોમાં ઇનપુટ આઉટપુટ કેવી રીતે સાથે વ્યવહાર. આ pset માટે વિતરણ કોડ માં copy.c તરીકે ઓળખાતી ફાઈલ છે, અને કે અમે શોધવા માટે જઈ રહ્યાં છો શું ખરેખર અમને ઉપયોગી થઇ રહ્યું છે કારણ કે અમે અંત જઈ રહ્યાં છો ખરેખર copy.c ફાઈલ નકલ અને માત્ર બદલવાની સહેજ સમસ્યા સેટ પ્રથમ 2 ભાગો હાંસલ કરવાનો પ્રયત્ન કરો. અને તેથી તે પછી હું પહેલાં તમારો ઉલ્લેખ કર્યો છે, અમે તેમજ ત્યાર બાદ બીટમેપ JPEGs સાથે વ્યવહાર કરવામાં આવે છે. તેથી ખરેખર કેવી રીતે તે ફાઈલો યોજવામાં આવે છે માળખું સમજવા માટે, અમે કેવી રીતે ખરેખર 0s અને સ્ટ્ર્ક્ટ્સ માં 1 સે અનુવાદ કરી શકો છો અને વસ્તુઓ કે અમે ખરેખર સમજી અને અર્થઘટન કરી શકે અને ફેરફાર કરવા માટે, કે ખરેખર મહત્વપૂર્ણ હશે, જેથી JPEG અને બીટમેપ ફાઇલો જવા અને તે બંધારણ સમજવા. Pset4, હંમેશની જેમ, પ્રશ્નો વિભાગ સાથે શરૂ થાય છે. તે I / O ફાઇલ સાથે કામ કરે છે અને વિચાર છે કે જે તમને માટે ટેવાયેલા આવશે. પછી ભાગ 1 ગૂઢ રહસ્યની અથવા ડિટેક્ટિવ વાર્તા કે નાટક છે, જેમાં તમે એક બીટમેપ ફાઇલ આપેલ કરી રહ્યાં છો કે લાલ ટપકા જેવા પ્રકારની તમામ ઉપર દેખાય છે. અને પછી મૂળભૂત રીતે આપણે શું કરવાનું જઈ રહ્યાં છો છે અને આ ફાઈલ લેવા અને માત્ર સહેજ ફેરફાર કરો આવૃત્તિ કે અમે વાંચી કરી શકે. આવશ્યકપણે, એક વાર અમે સમાપ્ત, અમે એ જ ફાઈલ પડશે, સિવાય અમે છુપાયેલા તે તમામ લાલ ટપકાંથી છુપાયેલ સંદેશ જુઓ કરવાનો પ્રયત્ન કરીશું. પછી કદ બદલવા એક કાર્યક્રમ છે કે જે, ફાઇલ આપેલ છે અને પછી ફાઇલ છે કે જે તે આઉટપુટો નું નામ આપવામાં અને પછી નંબર તેમજ આપેલ હોય, વાસ્તવમાં કે પૂર્ણાંક કિંમત દ્વારા કે બીટમેપ માપ બદલવા પડશે. પછી છેલ્લે, અમે પુનઃપ્રાપ્ત pset છે. અમે એક મેમરી કાર્ડ આપવામાં આવે છે અને પછી બધા ફોટા પુનઃપ્રાપ્ત છે કે આકસ્મિક કાઢી નાખવામાં આવ્યા છે, પરંતુ, આપણે જાણવા મળશે કાઢી, અને વાસ્તવમાં ફાઈલ દૂર; અમે ફક્ત પ્રકારની જ્યાં તેઓ ફાઈલ હતા ગુમાવી હતી, પરંતુ અમે તે પુનઃપ્રાપ્ત રહ્યા છીએ. સરસ. તેથી ફાઇલ જવા I / O ખાસ કરીને, આ છે વિધેયો કે જે તમે ઉપયોગ કરી શકશો સંપૂર્ણ યાદી. તમે પહેલેથી જ થોડો fopen તેના મૂળભૂત, fread, અને fwrite જોઇ છે, પરંતુ અમે અમુક ફાઈલ આગળ જુઓ જઈ રહ્યાં છો I / fputc જેમ કે ઓ કાર્યો, જેમાં તમે ફક્ત એક સમયે એક અક્ષર લખવા fseek, જ્યાં તમે પ્રકારની ફાઇલ સ્થિતિ સૂચક આગળ અને પાછળની ગતિ કરે છે, અને પછી કેટલાક અન્ય લોકો. પરંતુ અમે તે માં pset દરમિયાન થોડીવાર પછી જઈશ. તેથી પ્રથમ, માત્ર ફાઇલમાં વિચાર I / O પહેલાં અમે pset જાય, એક ફાઈલ ખોલવા માટે, ઉદાહરણ તરીકે, તમારે કરવા શું ખરેખર તે ફાઇલ માટે નિર્દેશક સુયોજિત થયેલ છે. તેથી અમે એક છે FILE * નિર્દેશક હોય છે. આ કિસ્સામાં, હું તે નિર્દેશક એક ફોન છું કારણ કે મારા infile જ હશે. અને તેથી હું કાર્ય અને પછી ફાઈલ નામ fopen ઉપયોગ જાઉં છું અને પછી સ્થિતિ કે જેમાં હું જાઉં છું ફાઇલ સાથે વ્યવહાર કરે છે. જેથી આ કેસમાં વાંચવા માટે, "r" લખાણ માટે "W", અને પછી ઉમેરવાની માટે "" છે. હમણાં પૂરતું, તમે એક infile સાથે જ્યારે કામ કરીએ છીએ અને બધા તમે કરવા માંગો છો બિટ્સ અને બાઇટ્સ ત્યાં સંગ્રહિત વાંચી છે, પછી તમે કદાચ તમારા સ્થિતિમાં તરીકે "r" નો ઉપયોગ કરવા માંગો છો જઈ રહ્યાં છો. જ્યારે તમે ખરેખર લખવા માંગો છો, પ્રકારની એક નવી ફાઈલ બનાવવા માટે, તો પછી અમે કરવા જઈ રહ્યાં છો શું છે અમે નવી ફાઈલ ખોલવા જઈ રહ્યાં છો અને લખવા માટે "W" સ્થિતિ વાપરો. તેથી તે પછી જ્યારે તમે વાસ્તવમાં ફાઇલોમાં reading કરી રહ્યાં છો, તો માળખું નીચે મુજબ છે. પ્રથમ તમે સ્ટ્રક્ટ કે બાઇટ્સ કે જે તમે વાંચી રહ્યાં છો સમાવશે માટે નિર્દેશક સમાવેશ થાય છે. તેથી કે જે બાઇટ્સ કે જે તમે વાંચી રહ્યા છો તે ઓવરને સ્થાન જ હશે. પછી તમારે માપ દર્શાવે છે જઈ રહ્યાં છો માંગો, મૂળભૂત રીતે કેટલા બાઇટ્સ તમારા કાર્યક્રમ માટે ફાઈલ માં વાંચો ધરાવે છે, માપ મૂળભૂત રીતે એક તત્વ છે, અને પછી તમે સ્પષ્ટ કેટલા તત્વો તમે વાંચવા માંગો છો જઈ રહ્યાં છો. અને પછી છેવટે તમે જાણવા જ્યાં તમે માંથી વાંચવા રહ્યાં છો છે, જેથી તમારા માં નિર્દેશક જ હશે. હું આ રંગ કોડેડ કારણ કે fread પણ ખૂબ fwrite સમાન, તમે ખાતરી કરો કે તમે યોગ્ય ક્રમમાં ઉપયોગ બનાવવા માંગો છો સિવાય, ખાતરી કરો કે તમે ખરેખર લખી રહ્યાં છે અથવા જમણી ફાઈલ માંથી વાંચવા બનાવે છે. તેથી પછી તરીકે પહેલાં, જો અમે તત્વ કદ તેમજ સંખ્યાબંધ તત્વો હોય છે, તો પછી અમે આસપાસ અહીં થોડો પ્લે કરી શકે છે. કહે હું કૂતરો સ્ટ્રક્ટ હોય છે અને તેથી તે પછી હું એક સમયે બે કૂતરાં વાંચી માંગો છો. હું કરી શકે શું એક તત્વ માપ કહેવું છે ડોગ એક માપ પ્રયત્ન રહ્યું છે અને હું ખરેખર તેમાંથી બે વાંચી જાઉં છું. વૈકલ્પિક રીતે, હું કરી શકે શું કહે છે હું માત્ર એક તત્વ વાંચી જાઉં છું અને તે એક તત્વ બે કૂતરાં માપ પ્રયત્ન રહ્યું છે. જેથી સમાન છે તમે કરી શકો છો નાટક કદ અને સંખ્યા સાથે આસપાસ પ્રકારની કેવી રીતે શું તમે વધુ સાહજિક છે તેના પર આધાર રાખીને. અધિકાર છે. તેથી હવે અમે લેખિતમાં ફાઈલો મેળવો. જ્યારે તમે ફાઇલ લખવા માંગો છો, પ્રથમ દલીલ ખરેખર છે જ્યાં તમે માંથી વાંચવા રહ્યાં છે. જેથી મૂળભૂત છે જે માહિતી કે જે તમે ફાઇલમાં લખી રહ્યા છે, જે અંતે આઉટ નિર્દેશક છે. તેથી જ્યારે તમે pset સાથે વ્યવહાર કરી રહ્યાં છો, તો ખાતરી કરો કે તમે ગુંચવણ ના થવી ન કરો. કદાચ બાજુ દ્વારા વ્યાખ્યાઓ બાજુ હોય છે. તમે વ્યાખ્યાઓ ખેંચવાનો અપ જાતે કરી માણસ લખીને અને પછી fwrite ઉદાહરણ માટે, ટર્મિનલ માં, અથવા તમે પાછા આ સ્લાઇડ ઉલ્લેખ કરી શકે છે અને ખાતરી કરો કે તમે યોગ્ય એક ઉપયોગ કરી રહ્યાં છો. તેથી ફરી, fwrite માટે, જ્યારે તમે એક ફાઈલ હોય કે જે તમે કરવા માટે લખી માંગો છો, કે જે છેલ્લા દલીલ થઈ રહ્યું છે અને તે માટે તે ફાઇલ માટે નિર્દેશક જ હશે. તેથી પછી તે કેવી રીતે અમે કદાચ એક જ સમયે અનેક બાઇટ્સ લખવા સાથે વ્યવહાર, પરંતુ કહેવું તમે માત્ર માત્ર એક જ અક્ષર લખવા માંગો છો. આપણે પછી આ ઉદાહરણમાં જોવા મળશે, જે ત્યાર બાદ બીટમેપ માં અમે તે ઉપયોગ કરવો પડશે. કે જ્યારે અમે fputc ઉપયોગ કરી શકો છો, જરૂરીયાતમાં માત્ર એક સમયે એક પાત્ર મૂકી, chr, ફાઈલ નિર્દેશક માં કે, અને અમારી બહાર ત્યાં નિર્દેશક. તેથી તે પછી જ્યારે પણ આપણે પહોંચવા અથવા ફાઇલ લખી, ફાઇલ જ્યાં અમે છે રાખવામાં આવેલ છે. તેથી તે કર્સર, ફાઈલ સ્થિતિ સૂચક એક પ્રકારનો છે. અને તેથી જ્યારે પણ અમે લખી અથવા ફાઇલમાં ફરી વાંચી, ફાઇલ ખરેખર યાદ જ્યાં તે છે, અને તેથી તે જ્યાં કર્સર છે ચાલુ રહે છે. આ ફાયદાકારક બની શકે છે જ્યારે તમે કરવા માંગો છો કરી શકો છો, જેમ કે, અમુક ચોક્કસ માત્રામાં વાંચવા માટે કંઈક કરવું અને પછી નીચેનો રકમ માં વાંચો, પરંતુ ક્યારેક અમે પાછા અથવા ખરેખર જાઓ ચોક્કસ સંદર્ભ કિંમત શરૂ શકો છો. તેથી પછી fseek કાર્ય, તેને શું છે અમને ચોક્કસ ફાઈલ માં કર્સરને ખસેડવા માટે પરવાનગી આપે છે બાઇટ્સ ચોક્કસ સંખ્યા. અને પછી અમે હોય તો શું સ્પષ્ટ જ્યાં સંદર્ભ કિંમત છે. તેથી તો જ્યાં કર્સર હાલમાં છે આગળ ધપાવવા અને પાછળ ખસે છે, અથવા આપણે સ્પષ્ટ કરી શકો છો કે તે ફક્ત ફાઇલ શરૂઆતથી માં ખસેડવા જોઇએ અથવા ફાઈલ ઓવરને છે. અને તેથી તમે નકારાત્મક અથવા હકારાત્મક કિંમતો જથ્થો પસાર કરી શકો છો, અને તે પ્રકારની કર્સર ક્યાં આગળ અથવા પાછળની જશે. પહેલાં અમે અન્ય psets માં મેળવવા માટે, ફાઇલ પર કોઈ પ્રશ્નો I / O? ઠીક છે. જેમ અમે વધુ ઉદાહરણો પ્રવેશ મેળવવા માટે મને પ્રશ્નો માટે અટકાવવા મફત લાગે. તેથી ગૂઢ રહસ્યની અથવા ડિટેક્ટિવ વાર્તા કે નાટક, તમે એક બીટમેપ સ્લાઇડ પર આ લાલ એક સમાન ફાઇલ સોંપી રહ્યા છીએ, અને તે આ જેવી લાગે છે - લાલ ટપકા સમૂહ - અને તમે ખરેખર શું લખેલું જાણતા નથી. તમે squint જો, તમે મધ્યમ અંદર થોડો આછા વાદળી રંગનું રંગ જોવા માટે સક્ષમ હોઇ શકે છે. આવશ્યકપણે, કે જ્યાં લખાણ સંગ્રહાયેલ છે. ત્યાં હત્યા કે થયું હતું, અને અમે શોધવા માટે જે તે કર્યું જરૂર છે. ક્રમમાં છે કે જે કરવું, અમે વાંચી શકાય બંધારણમાં માં આ છબી કન્વર્ટ પ્રકારની જરૂર પડે. જો તમે ગાય્સ ક્યારેય આ આવી, અમુક વખતે ત્યાં થોડી કિટ્સ હશે તમે એક લાલ ફિલ્મ સાથે વિપુલ - દર્શક કાચ જ્યાં હશે. કોઈપણ? યાહ. તેથી તમે આ જેવી હાથે કંઈક હશે, તો તમે વિપુલ - દર્શક કાચ હશે તે ઉપર લાલ ફિલ્મ સાથે, તો તમે તેને છબી ઉપર મૂકવામાં આવશે, અને તમે તે જોવા માટે સંદેશો તેમાં છુપાયેલા કરવાનો પ્રયત્ન કરશે. અમે લાલ ફિલ્મ સાથે વિપુલ - દર્શક કાચ નથી, તેથી તેના બદલે અમે પ્રકારની અમારી પોતાની બનાવવા માટે જઈ રહ્યાં છો આ pset છે. અને જેથી વપરાશકર્તા ઈનપુટ ગૂઢ રહસ્યની અથવા ડિટેક્ટિવ વાર્તા કે નાટક, પછી ચાવી માટે રહ્યું છે, bmp. જેથી infile, કે લાલ ટપકું સંદેશ છે છે, અને પછી તેઓ કહી રહ્યાં છે verdict.bmp અમારા outfile પ્રયત્ન રહ્યું છે. તેથી તેની નવી બીટમેપ એક ચાવી માટે સમાન છબી બનાવી રહ્યું છે એક વાંચનીય બંધારણમાં માં સિવાય અમે છુપાયેલા સંદેશ જ્યાં જોઈ શકો છો. ત્યારથી અમે સંપાદન અને હેરફેર અમુક પ્રકારના ત્યાર બાદ બીટમેપ સાથે વ્યવહાર કરવામાં જઈ રહ્યાં છો, અમે આ બીટમેપ ફાઈલોની માળખામાં માં ડાઈવ પ્રકારની માટે જઈ રહ્યાં છો. અમે વ્યાખ્યાન આ થોડો ઉપર ગયા, પરંતુ આપણે તેમની અંદર કેટલાક વધુ જુઓ. ત્યાર બાદ બીટમેપ અનિવાર્યપણે માત્ર બાઇટ્સ એક વ્યવસ્થા છે જ્યાં અમે સ્પષ્ટ કર્યું છે બાઇટ્સ જે અર્થ શું. તેથી અહીં બીટમેપ છબી નકશો જેવા પ્રકારની છે કહે છે કે અમુક હેડર ફાઈલો સાથે શરૂ થાય છે, ત્યાં અમુક જાણકારી સાથે શરૂ થાય છે. તમે જુઓ છો કે લગભગ બાઇટ 14 નંબર પર માપ બીટમેપ ઈમેજ સૂચવ્યું છે, અને તેના પર ચાલુ રહે છે. પછી પણ અમે ખરેખર અહીં રસ ધરાવો છો શું બાઇટ 54 નંબર આસપાસ શરૂ થાય છે. અમે આ RGB triples છે. શું કે શું થઈ રહ્યું છે તે વાસ્તવિક પીક્સલ, રંગ કિંમતો સમાવે છે. હેડર કે ઉપર બધું કેટલીક માહિતી છે ઇમેજ, ઇમેજ પહોળાઇ અને ઊંચાઇ માપ અનુરૂપ છે. જ્યારે અમે પેડિંગ જાય પાછળથી, અમે જોશો શા માટે ઇમેજ માપ પહોળાઈ અથવા ઊંચાઈ કરતાં અલગ હોઈ શકે છે. તેથી પછી આ પ્રતિનિધિત્વ - આ બીટમેપ છબીઓ બાઇટ્સ ક્રમ છે - અમે શું કરી શકે ઠીક કહે છે, હું જાઉં છું યાદ છે કે 14 અનુક્રમણિકા પર, કે જ્યાં કદ ઉદાહરણ છે, છે, પરંતુ તેના બદલે આપણે શું આ સરળ બનાવવા કરવા જઈ રહ્યાં છો છે તે સ્ટ્રક્ટ માં પ્રાવૃત. અને તેથી અમે બે અમારા માટે કરવામાં સ્ટ્ર્ક્ટ્સ, એક BITMAPFILEHEADER છે અને એક BITMAPINFOHEADER, અને તેથી જ્યારે પણ અમે તે ફાઈલ માં વાંચો, મૂળભૂત રીતે તે ક્રમમાં જઈને કરી રહ્યું છે, અને તેથી ક્રમમાં તે પણ biWidth અને biSize જેમ કે ચલો માં ભરી રહ્યું છે. અને પછી છેવટે દરેક પિક્સેલ ત્રણ બાઇટ્સ દ્વારા રજૂ થાય છે. પ્રથમ એક પિક્સેલ માં વાદળી જથ્થો છે, બીજો લીલા જથ્થો છે, અને છેલ્લે, લાલ, જ્યાં 0 અનિવાર્યપણે કોઈ વાદળી અથવા લીલા કોઈ છે જથ્થો અથવા કોઈ લાલ અને પછી એફએફ મહત્તમ કિંમત છે. આ હેક્સાડેસિમલ કિંમતો છે. તેથી પછી જો આપણે ff0000 હોય, તો પછી તે વાદળી મહત્તમ રકમ અનુલક્ષે અને પછી લીલા અને લાલ કોઈ આ બોલ પર કોઈ જેથી પછી તે અમને વાદળી પિક્સેલ આપશે. ત્યાર બાદ જો અમે બોર્ડ સમગ્ર હિસ્સો એફએફ બધા હોય છે, પછી તે અર્થ એ થાય કે અમે સફેદ પિક્સેલ હોય છે. આ ખાસ કરીને વિરુદ્ધ પ્રકારની હોય છે જ્યારે અમે RGB કહો. તે વાસ્તવમાં બીજીઆર બનશે. તેથી જો આપણે ખરેખર એક બીટમેપ છબી એક ઉદાહરણ તપાસ - દો મને એક ખેંચવાનો અહીં. તે થોડો નાનો છે. હું ઝૂમ છું, અને અમે જોઈ શકે છે તે pixelated છે. તે રંગ બ્લોક્સ જેવો દેખાય છે. તમે સફેદ બ્લોક્સ અને પછી લાલ બ્લોક્સ ધરાવે છે. જો તમે Microsoft પેઇન્ટ રમે, ઉદાહરણ માટે, તમે તે કંઈક કરી શકે છે દ્વારા મૂળભૂત રીતે માત્ર એક ચોક્કસ ક્રમમાં અમુક ચોરસ ચિત્રકામ. તેથી તે પછી આ ભાષાંતર આ બીટમેપ શું નીચે પ્રમાણે છે. અહીં અમે પ્રથમ સફેદ પિક્સેલ્સ છે, કે જે 6 બધા એફ હિસ્સો છે, અને પછી અમે લાલ પિક્સેલ્સ હોય છે, 0000ff દ્વારા દર્શાવે છે. અને તેથી બાઇટ્સ કે અમે હોય છે, અનુક્રમ સૂચવે છે કે કેવી રીતે બીટમેપ છબી નજર રહ્યું છે. તેથી હું અહીં કર્યું છે શું બસ તે તમામ બાઇટ્સ લખાયેલ છે અને તે પછી લાલ રંગના જેથી તમે પ્રકારની જોઈ શકો છો, તો તમે થોડો squint, કેવી રીતે તે પ્રકારના એક હસતો ચહેરો સૂચવે છે જો. જે રીતે બીટમેપ છબીઓ વર્ક હું તે મૂળભૂત કલ્પના એક ગ્રિડ છે. અને મૂળભૂત દ્વારા આમ તો, ગ્રીડ દરેક પંક્તિ માટે 4 બાઇટ્સ એક બહુવિધ પ્રયત્ન છે. જો આપણે એક બીટમેપ છબી જોવા માટે, તમે દરેક કિંમત ભરતા રહ્યા છો. હમણાં પૂરતું, તમે એક લાલ અહીં હોય છે, હોઈ શકે છે લીલા અહીં, અહીં એક વાદળી, પરંતુ તમે ખાતરી કરો કે છબી ચાર બાઇટ્સ એક બહુવિધ ભરવામાં આવે છે બનાવવા હોય છે. તેથી જો હું મારા માટે ત્રણ બ્લોક્સ વ્યાપક હોઈ છબી કરવા માંગો છો, તો પછી હું એક ખાલી કિંમત મૂકવા પડશે છેલ્લા એક ચાર એક બહુવિધ કરે છે. તેથી પછી હું કંઈક કે જે અમે પેડિંગ કૉલ કરી રહ્યાં છો માં ઉમેરો કરે છે. હું માત્ર એક એક્સ સાથે ત્યાં દર્શાવવા જઈ રહ્યો છું. હવે કહે છે કે અમે હમણાં પૂરતું છબી 7 પિક્સેલ્સ લાંબો છે, માંગો છો. અમે 1, 2, 3, 4, 5, 6, 7 હોય, અને તે બધી જ રંગ ભરેલો છે. જે રીતે બીટમેપ છબીઓ કામ કરે છે કે અમે એક 8 જરૂર છે. હમણાં અમે 1, 2, 3, 4, 5, 6, 7 છે. અમે બીટમેપ યોગ્ય રીતે વાંચી છબી માટે 8 જગ્યાઓ જરૂર છે. તેથી તો અમે શું હોય છે માત્ર પેડિંગ એક બીટ માં ઉમેરો કરવામાં આવે છે ખાતરી કરવા માટે કે જે પહોળાઈને તમામ સમાન છે કરો અને તે કે પહોળાઈને તમામ 4 ની બહુવિધ છે. અને તેથી હું પહેલાં સૂચવાયેલ, જે x અથવા squiggly રેખા તરીકે પૅડિંગ, પરંતુ વાસ્તવિક બીટમેપ images માં પેડિંગ હેક્ઝાડેસિમલ 0 ​​દ્વારા સૂચવવામાં આવે છે. તેથી કે જે એક પાત્ર, 0 રહેશે. હાથમાં શકે શું xxd આદેશ છે. તેને શું ખરેખર તમે બતાવે છે, હું શું હસતો સાથે પહેલાં હતી જેવી જ કરવાનું ઇચ્છતા જ્યારે હું ખરેખર છપાયેલ દરેક રંગ શું પિક્સેલ રહેશે અને પછી તેને રંગ કોડેડ, જ્યારે તમે રન નીચેના આદેશો સાથે xxd, પછી તેને ખરેખર છાપે રંગ શું છે તે પિક્સેલ્સ માટે હોય. તમારે કરવા અહીં શું વધારે છે હું સૂચવે 54 ધ ઓ જેમ, કહે છે કે હું 54 બાઇટ શરૂ જાઉં છું તે પહેલાં, કારણ કે, યાદ રાખો કે જો અમે ત્યાર બાદ બીટમેપ ના નકશા પર પાછા જુઓ, કે બધી હેડર અને જેમ માહિતી વસ્તુઓ છે. પરંતુ અમે ખરેખર કાળજી શું વાસ્તવિક પિક્સેલ્સ કે રંગ સૂચવે છે. જેથી ધ્વજ માં ઉમેરીને 54, ઓ દ્વારા, પછી અમે રંગ કિંમતો જોવા માટે સક્ષમ છો. અને જટિલ છે કે જેવી ફ્લેગો વસ્તુઓ વિશે ચિંતા કરશો નહીં. સમસ્યા સેટ સ્પેક, તમે કેવી રીતે xxd કરવા માટે પિક્સેલ્સ પ્રદર્શિત પર દિશાઓ પડશે. તેથી જો તમે અહીં જુઓ, તે પ્રકારની લીલા બોક્સ, આ નાની વસ્તુ જેવો દેખાય છે. હું કર્યું છે મૂળભૂત રીતે કોઈ વાદળી, લીલા ઘણો, અને લાલ એમ કહીને તરીકે 00ff00 રંગ કોડેડ. જેથી લીલા અનુલક્ષે છે. જેમ તમે અહીં જુઓ, અમે લીલા લંબચોરસ જુઓ. આ લીલા લંબચોરસ ફક્ત 3 પિક્સેલ્સ પહોળી છે, તેથી તે પછી આપણે શું કરવું છે ખાતરી કરવા માટે કે જે ઇમેજ 4 વ્યાપક એક બહુવિધ છે છે વધારાની ગાદી માં ઉમેરો. અને તેથી તો પછી તે કેવી રીતે તમે આ 0s અહીં જુઓ. આ વાસ્તવમાં તમારા કદ બદલવા pset પરિણામ હશે, અનિવાર્યપણે નાના બીટમેપ લેતા અને પછી તેને 4 દ્વારા મોટા. અને તેથી અમે શું છે કે ખરેખર આ ઈમેજ 12 પિક્સેલ્સ વિશાળ છે, પરંતુ 12 4 એક બહુવિધ છે, અને તેથી અમે ખરેખર ઓવરને અંતે કોઈપણ 0s જોઈ કારણ કે અમે કોઇપણ ઉમેરો કરવાની જરૂર નથી નથી કારણ કે તે સંપૂર્ણપણે ગાદીવાળાં છે. તે કોઇપણ વધુ જગ્યા નથી. ઠીક છે. પેડિંગ વિશે કોઈ પ્રશ્ન? ઠીક છે. સરસ. હું પહેલા ઉલ્લેખ કર્યો છે, ત્યાર બાદ બીટમેપ માત્ર બાઇટ્સ ક્રમ છે. અને તેથી અમે શું બરાબર બાઇટ સંખ્યા કે જે ટ્રેક રાખવા જરૂર બદલે છે વિશિષ્ટ ઘટક અનુલક્ષે, અમે ખરેખર એક સ્ટ્રક્ટ બનાવેલ હોય કે પ્રતિનિધિત્વ કરે છે. તેથી અમે શું એક RGBTRIPLE સ્ટ્રક્ટ છે. , જ્યારે પણ તમે એક RGB ટ્રિપલ એક ઉદાહરણ છે કારણ કે આ એક પ્રકાર સ્ટ્રક્ટ વ્યાખ્યાયિત કરવા માટે, પછી તમે rgbtBlue ચલ ઍક્સેસ કરી શકો છો, આ જ રીતે લીલા અને Red ચલો, જે સૂચવે છે કરશે કેટલી વાદળી, લીલો, અને લાલ, અનુક્રમે, તમારી પાસે છે. તેથી જો આપણે 0 થી, એફએફ માટે ગ્રીન સમૂહ, વાદળી ચલ સુયોજિત થયેલી છે જે મહત્તમ કિંમત તમને હોય છે, અને તે પછી લાલ ચલ 0 સુયોજિત, પછી રંગ શું આ ચોક્કસ RGB ટ્રિપલ પ્રતિનિધિત્વ કરશે? >> [વિદ્યાર્થી] લીલા. લીલા. બરાબર. તે ઉપયોગી થઈ તે જાણવા માટે ચાલી રહ્યું છે કે, જ્યારે તમે એક RGB ટ્રિપલ એક ઉદાહરણ છે વાદળી, લીલો, અને લાલ - - અલગ તમે ખરેખર રંગ જથ્થો વાપરી શકો છો. હવે અમે તે સંરચના વિષે વાત કરી છે, ચાલો આ બીએમપી ફાઇલ પર એક નજર. આ તમારા માટે બનાવવામાં સ્ટ્ર્ક્ટ્સ છે. અહીં અમે એક BITMAPFILEHEADER સ્ટ્રક્ટ છે. રસ માપ છે. પાછળથી, અમે માહિતી હેડર છે, જે અમને થોડા વધુ વસ્તુઓ છે કે જે રસપ્રદ છે છે, એટલે કે માપ, પહોળાઈ, અને ઊંચાઇ. આપણે પાછળથી જાય પડશે, જ્યારે તમે ફાઇલ વાંચવામાં તે આપોઆપ કારણ કે અમે ક્રમમાં સેટ કર્યા છે એ જ બની વાંચે છે. તેથી biSize અધિકાર બાઇટ્સ કે છબી ના વાસ્તવિક કદ અનુલક્ષે સમાવશે. અને પછી અહીં, છેલ્લે, કારણ કે અમે વિશે વાત કરી છે, અમે RGBTRIPLE typedef સ્ટ્રક્ટ છે. અમે એક rgbtBlue, ગ્રીન, અને Red તેની સાથે સંકળાયેલ હોય છે. સરસ. ઠીક છે. હવે અમે ત્યાર બાદ બીટમેપ થોડો સમજી સમજી કે અમે ફાઇલ હેડરમાં છે અને તે માહિતી સાથે અને પછી કે પછી સંકળાયેલ હેડર, અમે રસપ્રદ સામગ્રી છે રંગો, અને તે રંગો RGBTRIPLE સ્ટ્ર્ક્ટ્સ દ્વારા રજૂ થાય છે, અને તે જ, બદલામાં, ત્રણ વાદળી, ગ્રીન, અને લાલ સંકળાયેલ કિંમતો છે. તેથી હવે, અમને લાગે વિશે થોડી પુનર્પ્રાપ્ત પ્રકારની કરી શકો છો. માફ કરશો. ગૂઢ રહસ્યની અથવા ડિટેક્ટિવ વાર્તા કે નાટક વિશે વિચારો. જ્યારે અમે અમારા ચાવી ફાઈલ હોય, તો પછી અમે કરવા માંગો છો તે માટે પિક્સેલ દ્વારા પિક્સેલ વાંચી છે અને પછી કોઈક તે પિક્સેલ્સ બદલી કે જેથી અમે તેને વાંચી શકાય બંધારણમાં માં બનાવવામાં કરી શકે છે. અને તેથી તેને બનાવવામાં, અમે verdict.bmp ફાઇલમાં પિક્સેલ દ્વારા પિક્સેલ લખી રહ્યા છીએ. કે જે કરવા ઘણા પ્રકારની છે. અમે તે ખ્યાલ. તેથી અમે કર્યું છે શું છે અમે ખરેખર સાથે કર્યું છે તમે પ્રદાન copy.c. Copy.c કરે છે શું છે માત્ર આપેલ બીટમેપ ફાઇલ એક ચોક્કસ નકલ બનાવે છે અને પછી તેને આઉટપુટો. તેથી આ પહેલેથી જ તમારા માટે ફાઈલ ખોલે છે, પિક્સેલ દ્વારા પિક્સેલમાં વાંચે છે, અને પછી તે એક આઉટપુટ ફાઇલમાં માં લખે છે. ચાલો કે પર એક નજર. આ યોગ્ય વપરાશ ખાતરી છે, આ ફાઇલનામ અહીં મેળવી શકો છો. કરે છે શું છે તે ઇનપુટ ફાઇલ સુયોજિત કરે પ્રયત્ન આપણે શું માં infile માં પસાર કર્યા છે તે અહીં, જે આપણા બીજી દલીલ આદેશ વાક્ય છે. ખાતરી કરવા માટે કે અમે ફાઇલ ખોલવા કરી ચકાસે છે. ખાતરી કરવા માટે અમે એક નવું outfile અહીં કરી શકો છો બનાવવા ચકાસે છે. તો પછી આ શું અહીં કરે છે, તે માત્ર મારાથી બીટમેપ ફાઇલ માં શરૂઆતથી reading શરૂ થાય છે. શરૂઆતમાં, આપણે જાણીએ છીએ કે BITMAPFILEHEADER સમાવે છે, અને તેથી બિટ્સની તે શ્રેણીઓની સીધા BITMAPFILEHEADER ભરો કરશે. તેથી અમે અહીં છે શું કે BITMAPFILEHEADER બીએફ કહેતા હોય છે - કે અમારા પ્રકાર BITMAPFILEHEADER નવા ચલ છે - અમે બીએફ અંદર મૂકવામાં આપણે શું પોઇન્ટર માંથી વાંચી રહ્યા છીએ, જે અમારા infile છે. કેટલી અમે વાંચી છે? અમે કેટલા બાઇટ્સ અમે સમગ્ર BITMAPFILEHEADER સમાવે જરૂર માં વાંચો. એ જ રીતે, કે જે માહિતી હેડર માટે અમે શું કરી. જેથી અમે અમારા ફાઈલ સાથે infile માં ચાલુ કરી રહ્યાં છો, અને અમે તે બિટ્સ અને બાઇટ્સ reading કરી રહ્યાં છો, અને અમે તેમને પ્લગ કરી રહ્યાં છો સીધા ચલો કે અમે કરી રહ્યા છીએ તે આ ઘટકોને પ્રવેશ. અહીં અમે ફક્ત ખાતરી કરો કે બીટમેપ એક બીટમેપ છે બનાવી રહ્યા છો. હવે અમે એક outfile અધિકાર છે? જેથી તે રહે છે ત્યારે અમે તેને બનાવવા માટે, તેને અનિવાર્યપણે ખાલી છે. તેથી અમે મૂળભૂત શરૂઆતથી નવી બીટમેપ બનાવી છે. અમે શું છે અમે ખાતરી કરવા માટે કે અમે ફાઇલ હેડરમાં નકલ કરી છે અને infile જેવી જ જાણકારી હેડર છે. અમે શું છે અમે લખી છે - અને યાદ રાખો કે બીએફ એ ચલ છે પ્રકાર BITMAPFILEHEADER જેથી, અમે શું છે અમે માત્ર તે સામગ્રી ઉપયોગ માટે outfile માં લખો. અહીં યાદ રાખો કે, અમે પેડિંગ વિશે વાત કરી, તે કેવી રીતે મહત્વપૂર્ણ છે તેની ખાતરી કરવા માટે કે જે પિક્સેલ્સ કે અમે હોય જથ્થો 4 ની બહુવિધ છે. આ એક ખૂબ સુંદર ઉપયોગી ગણતરી કેટલી પેડિંગ તમારી પાસે સૂત્ર છે તમારી ફાઈલ પહોળાઇ આપવામાં આવે છે. હું તમને ગાય્ઝ યાદ રાખવું કે copy.c આપણે પેડિંગ ગણવા માટે એક સૂત્ર છે કરવા માંગો છો. ઠીક છે? જેથી દરેકને કે યાદ કરે છે. સરસ. તેથી પછી copy.c શું કરે છે આગામી તે ઉપર scanlines તમામ iterates. તે પંક્તિઓ દ્વારા પ્રથમ જાય છે અને પછી દરેક ટ્રિપલ કે તે વાંચે સંગ્રહ કરે છે અને પછી તે outfile માં લખે છે. તેથી તે પછી અહીં આપણે એક સમયે માત્ર એક RGB ટ્રિપલ reading કરી રહ્યાં છો અને પછી outfile માં તે જ ટ્રિપલ મૂકવા. આ જટિલ ભાગ એ છે કે પેડિંગ એક RGB ટ્રિપલ નથી, અને તેથી અમે ફક્ત RGB triples કે પેડિંગ જથ્થો વાંચી શકાતુ નથી. અમે હોય તો શું ખરેખર માત્ર છે અમારી ફાઈલ સ્થિતિ સૂચક ખસેડવા માટે, અમારા કર્સરને ખસેડવા માટે, તમામ પેડિંગ ઉપર છોડી દો કે જેથી અમે આગામી પંક્તિ પર છો પ્રકારની છે. અને પછી આ શું કરે છે નકલ તમને બતાવે છે કે કેવી રીતે તમે પેડિંગ ઍડ કરવા માંગો છો શકે છે. તેથી અમે ગણતરી કરી છે કેટલી પેડિંગ અમે જરૂર છે, જેથી અર્થ એ છે કે આપણે 0s ઓફ પેડિંગ નંબર કરવાની જરૂર છે. કરે છે શું લૂપ કે અમારા outfile માં 0s ઓફ પેડિંગ નંબર મૂકે માટે છે. અને પછી છેવટે તમે બંને ફાઇલો બંધ કરો. તમે તેમજ outfile infile બંધ કરો. તેથી કે copy.c કેવી રીતે કામ કરે છે, અને તે માટે ખૂબ ઉપયોગી હશે. તેના બદલે માત્ર વાસ્તવમાં સીધી નકલ છે અને તેને પેસ્ટ ઓફ અથવા માત્ર તે જોઈ અને ગમે તમે ઇચ્છો ટાઇપ, તમે માત્ર ટર્મિનલ આ આદેશ ચલાવો શકો છો, cp copy.c whodunit.c, કે જે એક નવી ફાઇલ બનાવશે whodunit.c, કે ચોક્કસ જ સામગ્રી નકલ કરે સમાવે છે. તેથી તો અમે શું કરી શકો ઉપયોગ કરવામાં આવે છે કે એક ફ્રેમવર્ક તરીકે કઈ રીતે બનાવવા અને સંપાદિત કરવા માટે અમારા ગૂઢ રહસ્યની અથવા ડિટેક્ટિવ વાર્તા કે નાટક ફાઇલ માટે. આ અમારા માટે ડોસ ગૂઢ રહસ્યની અથવા ડિટેક્ટિવ વાર્તા કે નાટક માટે શું કરવું છે, પરંતુ શું copy.c કરે છે છે વાસ્તવમાં તેમને મોટા ભાગના આપણા માટે કાળજી લે છે. તેથી એ બધા માટે અમે આગળ શું કરવાની જરૂર છે પિક્સેલ્સ બદલી જરૂરી વાસ્તવમાં ફાઈલ વાંચી શકાય બનાવે છે. આપેલ ટ્રિપલ પિક્સેલ માટે કે યાદ રાખો, પ્રકાર RGBTRIPLE આપેલ ચલ તેથી, તમે વાદળી, લીલો, અને લાલ કિંમતો ઍક્સેસ કરી શકો છો. કે આવવું હાથમાં રહ્યું છે જો તમે તેમને ઍક્સેસ કરી શકો છો, કારણ કે, કે અર્થ એ છે કે તમે પણ તેમને તપાસ કરી શકે છે, અને તે અર્થ એ થાય કે તમે તેમને બદલી શકો છો. તેથી, જ્યારે અમે અમારા લાલ વિપુલ - દર્શક કાચ ઉદાહરણ પર પાછા ગયા મૂળભૂત રીતે, કે આપણા માટે ફિલ્ટર એક પ્રકારનો તરીકે કામ કરવામાં આવ્યું હતું. તેથી અમે કરવા માંગો છો શું છે અમે triples કે સાઇન આવી રહ્યાં છે બધા ફિલ્ટર કરવા માંગો છો ત્યાં ઘણા અલગ આવું માર્ગો છે. મૂળભૂત રીતે, તમે કરી શકો છો ફિલ્ટર પ્રકાર ગમે તમે કરવા માંગો છો. કદાચ તમે બધી લાલ પિક્સેલ્સ બદલવા માંગો છો અથવા કદાચ તમે વિવિધ રંગ અલગ રંગ પિક્સેલ બદલવા માંગો છો. કે તમારા પર છે. યાદ રાખો કે તમે તપાસી શકો છો રંગ શું પિક્સલ છે અને પછી તમે પણ તેને બદલી તરીકે તમે પસાર થઇ છો. ઠીક છે. જેથી ગૂઢ રહસ્યની અથવા ડિટેક્ટિવ વાર્તા કે નાટક છે. એકવાર તમે ગૂઢ રહસ્યની અથવા ડિટેક્ટિવ વાર્તા કે નાટક ચલાવવા માટે, તમે જાણશો અપરાધ ના ગુનેગાર કોણ હતી. હવે અમે માટે માપ બદલો જાઓ રહ્યા છીએ. અમે હજુ પણ ત્યાર બાદ બીટમેપ સાથે વ્યવહાર કરવામાં જઈ રહ્યાં છો. અમે શું જવાનું માટે નથી કરી રહ્યાં છે અમે ઇનપુટ બીટમેપ હોય રહ્યા છીએ અને પછી અમે એક નંબર પાસ અને પછી outfile બીટમેપ મેળવવા જઈ રહ્યાં છો જ્યાં જે સામાન્ય છે અમારા n દ્વારા કદમાં સ્કેલ infile. કહેવું મારા ફાઈલ માત્ર એક પિક્સેલ મોટી હતી. પછી જો મારી n 3 દ્વારા 3, માપન હતી, ત્યારબાદ હું કે n વખત પિક્સેલ નંબર પુનરાવર્તન કર્યું હતું, જેથી 3 વખત, અને તે પછી પણ તે આરોહણ નીચે 3 વખત છે. આમ તમે જોઈ હું તેને ખેંચે છું ઊભી તેમજ આડા. અને પછી અહીં એક ઉદાહરણ છે. જો તમે n એ = 2 હોય, તો તમે જુઓ કે પ્રથમ વાદળી પિક્સેલ બે વખત પુનરાવર્તન આડી ઊભી તરીકે બે વખત છે. અને પછી પર ચાલુ રહે છે, અને તેથી તમે બે દ્વારા તમારા મૂળ છબી સીધી માપન ધરાવે છે. તેથી પછી જો અમે આ માટે સ્યુડોકોડનો વિગતવાર હતા, અમે ફાઈલ ખોલવા માંગો છો. અને પછી એ જાણીને કે જો આપણે અહીં પાછા જાઓ, અમે જુઓ કે outfile માટે પહોળાઈ માટે infile માટે પહોળાઈ કરતાં અલગ હોઈ રહ્યું છે. કે શું અર્થ છે? તેનો અર્થ એ છે કે અમારા હેડર જાણકારી બદલવા માટે જઈ રહ્યો છે. અને તેથી અમે કરવા માંગો છો પડશે શું છે હેડર જાણકારી સુધારવા માટે, ખબર છે કે, જ્યારે અમે ફાઈલો વાંચવા માટે જો તમે copy.c માળખા પર સંચાલન કરી રહ્યાં છે, અમે પહેલાથી જ એક ચલ છે કે જે સૂચવે છે કે શું માપ છે અને તે જેવી વસ્તુઓ હોય છે. તેથી તમે એક વખત હોય, તો તમે કરવા માંગો છો શકે શું છે તે ખાસ ચલો બદલવાનો છે. યાદ રાખો, જો તમે એક સ્ટ્રક્ટ છે, તમે કેવી રીતે છે કે અંદર ચલો ઍક્સેસ કરો. તમે કોઈ ઓપરેટર અધિકાર વાપરવા માટે,? તેથી પછી તે વાપરી રહ્યા હોય, તો તમે જાણો છો કે તમે હેડર જાણકારી બદલી કરવાની જરૂર પડશે. તેથી અહીં માત્ર વાસ્તવિક તત્વો કે તમારી ફાઈલ માં બદલવા જઇ રહ્યા યાદી છે. ફાઇલ કદ બદલીને, ઇમેજ, તેમજ પહોળાઈ અને ઊંચાઈ કરી રહ્યું છે. તેથી પછી ત્યાર બાદ બીટમેપ ના નકશા પર પાછા જવાનું, જુઓ કે શું તે ફાઇલ હેડરમાં અથવા માહિતી હેડર કે જે જાણકારી સમાવે છે અને પછી બદલી જરૂર છે. ફરીથી, cp copy.c resize.c કહો. એટલે કે resize.c હવે બધું નકલ અંદર સમાયેલ છે સમાવે છે કારણ કે નકલ અમને પિક્સેલ દ્વારા દરેક scanline પિક્સેલ માં reading એક માર્ગ પૂરો પાડે છે. સિવાય હવે, તેના બદલે માત્ર કિંમતો બદલવા જેવા અમે ગૂઢ રહસ્યની અથવા ડિટેક્ટિવ વાર્તા કે નાટક માં કર્યું, અમે કરવા માંગો છો શું છે અમે બહુવિધ પિક્સેલ્સ લખવા માંગો છો લાંબા તરીકે અમારી n એ 1 કરતાં વધુ હોય છે. તો પછી અમે કરવા માંગો છો શું છે અમે તેને n દ્વારા આડા પટ માંગો છો, તેમજ તે ઊભી ખેંચવા n દ્વારા. અમે આ કેવી રીતે કરવું પડી શકે છે? કહો તમારા n 2 છે અને તમે આ આપવામાં infile છે. તમારા કર્સર પ્રથમ એક સમયે શરૂ થઈ રહ્યું છે, અને તમે કરવા માંગો છો જો n 2 છે, શું તમે તે 2 માં છાપો કરવા માંગો છો. તેથી તમે 2 તે માં છાપો. પછી તમારા કર્સરને આગામી પિક્સેલ, કે જે લાલ છે ખસેડવા રહ્યું છે, અને તે માટે 2 તે લાલ શૈલીઓનો છાપો, તે શું તે પહેલા કરવામાં આવ્યું છે તે પર ઉમેરવાની બનશે. પછી કર્સર એ આગામી પિક્સેલ ખસેડવા અને 2 તે ઘટવું આવશે. જો તમે copy.c ફ્રેમવર્ક, આ શું કરે છે પાછા અહીં જુઓ છે તે RGB ટ્રિપલ, નવી ટ્રિપલ કહેવાય ચલ એક નવી ઉદાહરણ બનાવે છે. અને અહીં જ્યારે તે માં વાંચો, તે infile 1 RGBTRIPLE માંથી વાંચે અને અંદર સંગ્રહિત કરે છે કે ટ્રિપલ ચલ છે. તેથી તો પછી તમે ખરેખર તે ચોક્કસ પિક્સેલ રજૂ ચલ હોય છે. પછી જ્યારે તમે લખો, તમે શું કરવા માંગો છો શકે લૂપ માટે એક જ fwrite નિવેદન ડબામાં બંધ કરવું છે કે ઘણા વખત જરૂરી તરીકે તમારી outfile તેને લખે છે. તે પર્યાપ્ત સરળ છે. જસ્ટ મૂળભૂત લખાણ પ્રક્રિયા n વખત નંબર તેને આડી આરોહણ પુનરાવર્તન કરો. પરંતુ તે પછી આપણે યાદ રાખો કે અમારી પેડિંગ બદલવા માટે ચાલી રહ્યું છે. પહેલાં કહેવું, અમે 3 લંબાઈ કંઈક હતું. તો પછી અમે કેટલી પેડિંગ ઉમેરવા માંગો છો? એક માત્ર વધારે તે 4 ની બહુવિધ કરે છે. પરંતુ કહે છે અમે = n 2 દ્વારા આ ચોક્કસ ઇમેજ ખેંચે કરી રહ્યાં છો. તેથી તે પછી કેટલા વાદળી પિક્સેલ્સ અમે ઓવરને અંતે હશે? અમે 6 હશે. 1, 2, 3, 4, 5, 6. અધિકાર છે. 6 4 બહુવિધ નથી. 4 ના નજીકના બહુવિધ શું છે? કે 8 જ હશે. તેથી અમે ખરેખર પેડિંગ અને 2 અક્ષરો ત્યાં હોય રહ્યા છીએ. શું કોઇને યાદ રાખો કે જો અમે કોઈ પેડિંગ ગણતરી સૂત્ર છે અને તે જ્યાં હોઈ શકે? [અશ્રાવ્ય વિદ્યાર્થી પ્રતિભાવ] >> copy.c. અરે વાહ, અધિકાર. ત્યાં copy.c એક સૂત્ર ગણતરી કેટલી પેડિંગ તમારી પાસે છે આ બીટમેપ છબી ચોક્કસ પહોળાઈ આપવામાં આવે છે. તેથી પછી તે ચાલી રહ્યું છે ઉપયોગી હોઈ જ્યારે તમે પેડિંગ ચોક્કસ માત્રામાં ઉમેરવાની જરૂર છે ખરેખર બહાર આકૃતિ કેટલી પેડિંગ તમે ઉમેરવાની જરૂર છે. પરંતુ એક નોંધ, તેમ છતાં છે, કે જે તમે ખાતરી કરો કે તમે યોગ્ય કદ ઉપયોગ કરી રહ્યાં છો બનાવવા માંગો છો. જસ્ટ સાવચેત રહો કારણ કે તમે મૂળભૂત બે બીટમેપ ચિત્રો સાથે વ્યવહાર કરવામાં જઈ રહ્યાં છો. તમે ખાતરી કરો કે તમે યોગ્ય એક ઉપયોગ કરી રહ્યાં છો બનાવવા માંગો છો. જ્યારે તમે outfile માટે પેડિંગ ગણતરી કરી રહ્યાં છો, તો તમે outfile પહોળાઇ ઉપયોગ કરવા માંગો છો અને પહેલાનાં એક પહોળાઇ નથી. સરસ. તે પ્રકારના સંપૂર્ણ બીટમેપ છબી આડા ફેલાયેલા કાળજી લે છે. પરંતુ અમે શું કરવા માંગો છો તે ખરેખર છે ઊભી તેમજ પટ. આ થોડો trickier શકે છે કારણ કે જ્યારે અમે એક પંક્તિ નકલ પૂર્ણ કરી લો છો રહ્યું છે અને તે પંક્તિ લખી, અમારા કર્સર ઓવરને અંતે પ્રયત્ન રહ્યું છે. તેથી જો આપણે ફરી વાંચી, પછી તે માત્ર આગલા લીટી માં વાંચો બનશે. તેથી અમે કરવા માંગો છો શું છે તે પ્રકારની પંક્તિઓ ફરીથી નકલ કેટલાક માર્ગ શોધવા અથવા માત્ર તે હરોળમાંથી લેતા અને પછી તેને ફરીથી પુનર્લેખન પ્રકારની. હું પ્રકારની માટે ખોટો સંદર્ભ આપવામાં આવ્યો, ત્યાં ઘણી અલગ આ કરવા માટે માર્ગો છે. તમે કરી શકે શું છે કારણ કે તમે પસાર થઇ રહ્યાં છો અને ચોક્કસ scanline મારફતે વાંચન અને તે જરૂરી તરીકે બદલી રહ્યા હોય, તો પછી સ્ટોર પ્રકારની ઝાકઝમાળ તે પિક્સેલ્સ હોય. પછી તમે પાછળથી ખબર છે કે તમે તે એરે ફરીથી છાપી કરવાની જરૂર પડશે, અને તેથી તમે હમણાં કે એરે વાપરવા માટે કે જે કરી શકે છે. અન્ય કરવું રસ્તો છે તમે નીચે એક પંક્તિ નકલ કરી શકે છે, સમજો કે તમે તે ફરીથી નકલ કરવાની જરૂર છે, તેથી વાસ્તવમાં તમારા કર્સરને ખસેડવા માટે, અને કે જે પદ્ધતિ fseek ઉપયોગ કરી રહ્યું છે. તમે તમારા કર્સર એ તમામ માર્ગ પર પાછા ફરી શકે છે અને પછી નકલ પ્રક્રિયા ફરીથી પુનરાવર્તન કરો. તેથી જો અમારી માપન સંખ્યા n છે, તો પછી કેટલા વખત અમે પાછા જવા પડશે અને એક લીટી લખાણ લખે છે? >> [વિદ્યાર્થી] n - 1. >> અરે વાહ, સંપૂર્ણ છે. n - 1. અમે તેને કર્યું છે એકવાર પહેલાથી જ છે, તેથી તે પછી અમે જઈને પાછા પ્રક્રિયા પુનરાવર્તન કરવા માંગો છો પડશે વખત 1 જથ્થો - એન. ઠીક છે. તેથી તમે તમારા પુન: માપ કાર્ય છે. હવે અમે એક ખરેખર મજા ભાગ, મારા મનપસંદ pset છે, કે જે પુનર્પ્રાપ્ત છે મેળવી શકો છો. તેના બદલે ત્યાર બાદ બીટમેપ, આ સમય અમે JPEGs સાથે વ્યવહાર કરી રહ્યા છો. અમે ખરેખર JPEGs ફક્ત એક ફાઇલ આપવામાં થતો નથી, અમે મૂળભૂત રીતે કાચા મેમરી કાર્ડ બંધારણમાં આપવામાં રહ્યા છો. અને તેથી આ શરૂઆતમાં માહિતી અને કચરો કિંમતો બીટ સમાવે છે, અને પછી તે શરૂ થાય છે અને તે JPEG ફાઈલો સમૂહ છે. જો કે, અમે એક કાર્ડ આપવામાં રહ્યાં છો જ્યાં અમે ફોટા કાઢી નાખ્યો છે; અનિવાર્યપણે, અમે જ્યાં ફોટા કાર્ડ અંદર સ્થિત છે ભૂલી ગયા છો. તેથી પછી પુનઃપ્રાપ્ત અમારા કાર્ય માટે આ કાર્ડ બંધારણમાં મારફતે જાઓ અને તે ચિત્રો ફરીથી શોધો. સદભાગ્યે, JPEG ફાઈલો અને કાર્ડ ફાઈલ બંધારણ થોડી મદદરૂપ છે. તે ચોક્કસપણે એક બીટ trickier કરવામાં આવી છે શકે છે, જો તે આ ચોક્કસ બંધારણ ન હતા. દરેક JPEG ફાઈલ વાસ્તવમાં બે શક્ય સિક્વન્સ, ઉપર દર્શાવેલ સાથે શરૂ થાય છે. મૂળભૂત રીતે, તમે જ્યારે નવું JPEG ફાઈલ હોય છે, તે ક્યાં તો ક્રમ ffe0 ffd8 અથવા અન્ય એક, ffe1 ffd8 સાથે શરૂ થાય છે. અન્ય ઉપયોગી જાણવા બાબત એ છે કે JPEGs નજીકના સંગ્રહિત થાય છે. તેથી જ્યારે પણ કોઈ એક JPEG ફાઈલ સમાપ્ત થાય છે, જ્યારે અન્ય એક શરૂ થાય છે. તેથી ત્યાં ત્યાં કિંમતો વચ્ચે કોઇ પણ પ્રકારની નથી. એકવાર તમે કોઈ JPEG શરૂઆત ફટકો, જો તમે પહેલાથી જ કોઈ JPEG કર્યું છે reading કરવામાં આવ્યા છે, તમે જાણો છો કે તમે જે અગાઉના એક અને આગામી એક શરૂઆત ઓવરને હિટ થઈ છે. આ આત્મસાત્ પ્રકારની કરવા માટે, હું એક યોજનાકીય કરી હતી. JPEGs વિશે અન્ય બાબત એ છે કે આપણે એક સમયે 512 બાઇટ્સ ક્રમ માં તેને વાંચી શકે છે, આ જ રીતે કાર્ડ શરૂઆત સાથે. અમે દરેક એક બાઈટ ચકાસણી કરી કારણ કે તે suck કરશે કરવાની જરૂર નથી. તેથી તેના બદલે, અમે શું કરી શકો છો ખરેખર માત્ર એક સમયે 512 બાઇટ્સ માં વાંચો અને પછી, તેના બદલે તે નાના થોડું સ્લાઇસેસ તે વચ્ચે ચકાસણી છે, અમે ફક્ત 512 બાઇટ્સ શરૂઆત તપાસી શકો છો. અનિવાર્યપણે, આ ચિત્ર, તમે શું કાર્ડ શરૂઆત છે, તમે કિંમતો કે જે ખરેખર વાસ્તવિક પોતાને JPEGs સંબંધિત નથી. પછી પણ મેં શું એક કોઈ JPEG માટે બે શરૂ ક્રમાંકો સૂચવે તારો છે. તેથી જ્યારે પણ તમે એક તારો જુઓ, તમે જાણો છો કે તમે કોઈ JPEG ફાઇલ હોય છે. અને પછી દરેક JPEG ફાઈલ માટે 512 બાઇટ્સ કેટલાક બહુવિધ પ્રયત્ન રહ્યું છે જરૂરી નથી, પરંતુ તે જ બહુવિધ. જે રીતે તમે જાણો છો કે તમે બીજા કોઈ JPEG ફટકો કર્યો છે જો તમે અન્ય તારો દબાવો, બાઇટ્સ બીજા શરૂ ક્રમ. પછી તમે અહીં છે શું છે તમે લાલ JPEG ચાલુ ફાઈલ હોય ત્યાં સુધી તમે એક તારો દબાવો, જે નવા રંગ દ્વારા સૂચવવામાં આવે છે. તમે ચાલુ રાખો અને પછી તમે બીજું તારો દબાવો, તમે અન્ય JPEG દબાવો, તમે અંત સુધી તમામ રીતે ચાલુ રાખે છે. તમે છેલ્લા ચિત્ર અંતે અહીં કરશો, ગુલાબી એક. તમે ઓવરને પર જાઓ ત્યાં સુધી તમે ફાઈલ અક્ષર ઓવરને નહીં. આ ખરેખર ઉપયોગી હોઈ રહ્યું છે. થોડા મુખ્ય અહીં takeaways: આ કાર્ડ ફાઈલ કોઈ JPEG સાથે શરૂ થતું નથી, પરંતુ એક વખત કોઈ JPEG શરૂ કરે છે, JPEGs તમામ બાજુ બાજુ દ્વારા એક બીજા સંગ્રહિત થાય છે. આ પુનર્પ્રાપ્તિ માટે અમુક સ્યુડોકોડનો. પ્રથમ, અમે અમારી કાર્ડ ફાઇલ ખોલવા જઈ રહ્યાં છો, અને તે માટે અમારી ફાઈલ I / O કાર્યો ઉપયોગ કરી રહ્યું છે. અમે નીચેના પ્રક્રિયા પુનરાવર્તન ન થાય ત્યાં સુધી અમે ફાઈલ ઓવરને પહોંચી ગયા છો જઈ રહ્યાં છો. અમે એક સમયે 512 બાઇટ્સ વાંચી રહ્યા છીએ. અને હું અહીં જણાવ્યું હતું કે, શું છે અમે તે બફર માં સંગ્રહે જઈ રહ્યાં છો, જેથી મૂળભૂત તે 512 બાઇટ્સ ને પકડી સુધી આપણે જાણીએ છીએ બરાબર તેમની સાથે શું કરવું. તો પછી અમે કરવા માંગો છો શું છે અમે તપાસ શું આપણે એક તારો નથી અથવા ફટકો કર્યું છે કરવા માંગો છો. જો આપણે એક તારો હિટ કરી લીધી છે, જો આપણે એક શરૂ ક્રમાંકો હિટ કરી લીધી છે, પછી આપણે જાણીએ છીએ કે આપણે એક નવી JPEG ફાઈલ હિટ થઈ છે. અમે શું કરવા માંગો છો છે કરીશું અમે અમારી pset4 ડિરેક્ટરીમાં નવી ફાઈલ બનાવવા માંગો છો જઈ રહ્યાં છો કે ફાઈલ કરવાનું ચાલુ રાખો. પણ, જો અમે પહેલાથી જ કર્યું છે કોઈ JPEG કર્યો હતો, પછી અમે તે ફાઈલ અંત અને તે pset4 ફોલ્ડર પર દબાણ કરવા માંગો છો, જ્યાં અમે પડશે કે ફાઈલ સંગ્રહાયેલ જો આપણે સ્પષ્ટ કરો નહિં કે અમે કે JPEG ફાઈલ અંત કર્યો છે, કારણ કે, તો પછી અમે મૂળભૂત રીતે એક અનિશ્ચિત રકમ હશે. આ JPEGs ક્યારેય સમાપ્ત થશે. તેથી અમે ખાતરી કરવા માટે કે જ્યારે અમે કોઈ JPEG ફાઈલ માં વાંચી રહ્યાં છો અને તે લખવા બનાવવા માંગો છો, અમે ખાસ કરીને તે બંધ કરવા માટે આગામી એક ખોલવા માંગો છો. અમે ઘણા વસ્તુઓ તપાસ કરવા માંગો છો પડશે. અમે તપાસ શું આપણે આપણા બફર સાથે નવા JPEG શરૂઆતમાં છો માંગો છો અને પણ જો આપણે પહેલેથી જ કોઈ JPEG મળ્યા છે પહેલા કારણ કે તે તમારા પ્રક્રિયા થોડો ફેરફાર થશે. તેથી તો પછી તમે બધા માર્ગ મારફતે જાઓ અને તમે ફાઈલ ઓવરને દબાવો, પછી તમે કરવા માંગો છો પડશે શું છે તમે બધી ફાઈલો છે કે જે હાલમાં ખોલી છે બંધ કરવા માંગો છો પડશે. કે કદાચ છેલ્લા JPEG ફાઈલ કે તમારી પાસે હોય, તરીકે કાર્ડ ફાઈલ તેમજ કરવામાં આવી વ્યવહાર કર્યો છે. છેલ્લા અવરોધ કે અમે હલ કરવાની જરૂર છે કે કેવી રીતે ખરેખર કોઈ JPEG ફાઈલ બનાવવા માટે અને કેવી રીતે ખરેખર ફોલ્ડર માટે તેને દબાણ. આ માટે જરૂરી છે કે દરેક pset JPEG કે જે તમે શોધી નીચેના બંધારણમાં માં હોઈ શકે, તમે નંબર જ્યાં હોય, jpg.. સંખ્યા, પણ જો તે 0 છે, અમે તેને 000.jpg કૉલ કરો. જ્યારે તમે તમારા કાર્યક્રમ માં કોઈ JPEG શોધવા માટે, તમે તેને આદેશ છે કે તે મળી છે માં નામ આપવા માંગો છો જઈ રહ્યાં છો. આ શું અર્થ છે? અમે પ્રકારની જરૂર કેટલી અમે શોધી છે ટ્રૅક રાખવા અને દરેક JPEG સંખ્યા શું હોવું જોઈએ. અહીં અમે sprintf કાર્ય લાભ લેવા જઈ રહ્યાં છો. માટે સમાન printf, પ્રિન્ટ ફક્ત પ્રકારની ટર્મિનલ એક બહાર કિંમત છે કે જે, sprintf ફોલ્ડર માં ફાઈલ બહાર છાપે છે. અને તેથી આ શું જો હું sprintf શીર્ષક હતું, આમ, અને પછી ત્યાં શબ્દમાળા તેને 2.jpg છાપી શકે છે. એમ ધારી રહ્યા છીએ કે હું મારા ફાઈલો બંધ કરી, સાચી રીતે કે જે ફાઈલ કે હું આઉટ થઈ લખી હતી સમાવે છે. પરંતુ એક વસ્તુ એ છે કે કોડ કે હું અહીં છે નથી સંતોષ એ pset શું જરૂર થયું નથી. આ pset જરૂરી છે કે બીજા કોઈ JPEG ફાઈલ 2 માત્ર બદલે 002 નામવાળી હોવી જોઈએ. તેથી જ્યારે તમે નામ છાપો, તો પછી કદાચ તમે પ્લેસહોલ્ડર સહેજ બદલી શકો છો. શું કોઇને યાદ અમે કેવી રીતે વધારાની જગ્યા માટે પરવાનગી આપે છે જ્યારે અમે કંઇક છાપવા? યાહ. >> [વિદ્યાર્થી] તમે ટકા સાઇન અને 2 વચ્ચે 3 એક મૂકો. >> અરે વાહ, સંપૂર્ણ છે. તમે આ કેસમાં 3 મૂકવામાં કારણ કે અમે 3 માટે જગ્યા કરવા માંગો છો પડશે. % 3d કદાચ તમે બદલે 002.jpg 2 આપશે. આ sprintf કાર્ય માં પ્રથમ દલીલ ખરેખર એક કોલસો બનાવો એરે છે, જે અમે અગાઉ શબ્દમાળાઓ તરીકે જાણતા હતા. તે ઇચ્છા, એક હંગામી સંગ્રહ જેમ વધુ પ્રકારની, માત્ર ફલસ્વરૂપ શબ્દમાળા સ્ટોર કરે છે. તમે ખરેખર આ સાથે વ્યવહાર કરવામાં આવશે, પરંતુ તમે તેને સમાવેશ કરવાની જરૂર છે. ખબર છે કે, દરેક ફાઈલ નામ નંબર છે, કે જે ત્રણ અક્ષરો લે છે, અને પછી, jpg., લાંબા કે કેવી રીતે આ અરે હોવો જોઈએ? એક નંબર થ્રો. શીર્ષકમાં કેટલા નામ, અક્ષરો? તેથી 3 hashtags, મુદત, jpg છે. >> [વિદ્યાર્થી] 7. 7. >> તદ્દન નથી. અમે 8 માંગો છો જઈ રહ્યાં છો કારણ કે અમે નલ ટર્મીનેટર તેમજ પરવાનગી આપવા માંગો છો. છેલ્લે, માત્ર બહાર એવી પ્રક્રિયા છે જે તમે પુનર્પ્રાપ્ત માટે કરી આવશે દોરવા માટે, તમે કેટલાક શરૂઆત માહિતી નથી. તમે ચાલુ રાખો જ્યાં સુધી તમે કોઈ JPEG ફાઈલ શરૂઆત શોધવા માટે, અને તે ક્યાં તો બે શરૂ ક્રમાંકો એક હોઇ શકે છે. તમે વાંચન પર રાખવા. દરેક અહીં સ્લેશ 512 બાઇટ્સ રજૂ કરે છે. તમે વાંચન પર રાખવા, reading સુધી તમે અન્ય શરૂ ક્રમ મળે પર રાખો. એકવાર તમારી પાસે છે કે, તમે વર્તમાન JPEG અંત - આ કિસ્સામાં, તે લાલ એક છે, તેથી તમે તે સમાપ્ત કરવા માંગો છો. તમે sprintf તમારા pset4 ફોલ્ડર માં કે નામ પર કરવા માંગો છો, પછી તમે નવી JPEG ખોલો અને પછી વાંચન પર રાખવા માંગો છો જ્યાં સુધી તમે આગામી મળે. વાંચન પર રાખો, વાંચન પર રાખવા, અને પછી છેવટે છેવટે, તમે ફાઈલ ઓવરને સુધી પહોંચી જઈ રહ્યાં છો, અને તેથી તમે છેલ્લા JPEG બંધ કરવા માંગો છો કે જે તમારી સાથે કામ કરતા હતા પડશે, sprintf તમારા pset4 ફોલ્ડર બુટ કરો, અને પછી ચિત્રો કે તમે જીવનમાં કર્યું છે જુઓ કે. તે ચિત્રો ખરેખર છે CS50 સ્ટાફ ચિત્રો, અને તેથી આ છે જ્યાં pset ના બોનસ મજા ભાગ આવે છે એ છે કે તમે તમારા વિભાગમાં સ્પર્ધા થાય છે ચિત્રો TFs શોધવા અને તેમની સાથે ચિત્રો લેવા સાબિત કરવા માટે કે જે તમે pset કર્યું છે અને તેથી તમે જોઈ શકો છો કે જે સ્ટાફ સભ્યો ચિત્રો છે. તેથી પછી તમે સ્ટાફ સાથે ચિત્રો લો. ક્યારેક તમે તેમને પીછો નીચે પડશે. કદાચ તેમને કેટલાક તમે દૂર સ્કોર પ્રયત્ન કરશે. તમે તેમની સાથે ચિત્રો લો. આ ચાલી રહ્યું છે. તે કારણે જ્યારે pset કારણે છે નથી. આ સમયસીમા પછી સ્પેક માં જાહેરાત કરી હતી આવશે. તમારો વિભાગ સાથે મળીને પછી, કલમ જે સૌથી ચિત્રો લે છે સૌથી સ્ટાફ સભ્યો સાથે ખરેખર અદ્ભુત ઇનામ જીતી જશે. કે વિચાર પ્રોત્સાહન પ્રકારની છે તમારી pset4 શક્ય તેટલી ઝડપથી સમાપ્ત કારણ કે પછી તમે બિઝનેસ મેળવી શકો છો તમામ અલગ અલગ CS50 સ્ટાફ સભ્યો નીચે શિકાર. કે ફરજિયાત નથી, છતાં, તેથી એક વાર તમે ચિત્રો વિચાર, પછી તમે pset4 સાથે સમાપ્ત થાય છે. અને હું 4 Walkthrough સાથે સમાપ્ત છું, જેથી તમે આવતા તમામ આભાર. વિદેશી સારું નસીબ. [વધાવી] [CS50.TV]