>> [સંગીત વગાડવાનો]
>> ZAMYLA ચાન: ચાલો ફટકો પુન: માપ સાથે વસ્તુઓ.
પુન: માપ, વપરાશકર્તા દ્વારા પાસ કરશે આદેશ વાક્ય, એક બીટમેપ છબી કે
તેઓ તમને એક નંબર દ્વારા આરોહણ કરવા માંગો છો તેઓ પણ પાસ કે
આદેશ વાક્ય.
અમે આ કેવી રીતે કરવું?
>> વેલ, પ્રથમ પ્રથમ વસ્તુઓ, ચાલો પગલાંઓ આ નીચે તૂટી જાય છે.
તમે infile ખોલવા માંગો રહ્યા છીએ તેઓ તમને આપે છે, એ જ રીતે તે
બનાવવા અને outfile ખુલતી તમે મૂકી રહ્યા છીએ
સાઇન પુન: માપ છબી
પછી, તમે માપ બદલવાની, અને કરી રહ્યાં છો કારણ કે તે એક બીટમેપ છે, કારણ કે તે કોઇ શીર્ષક, તેથી
તમે પણ હેડર અપડેટ રહ્યા છીએ outfile માટે માહિતી,
અને સાઇન લખવા
પછી, તમે વંચાય રહ્યા છીએ માટે infile ના scanline,
પિક્સેલ બાય પિક્સેલ, આડા માપ બદલવાની અને માં તે પિક્સેલ્સ લખવા
outfile, સ્પષ્ટ થયેલ છે વપરાશકર્તાની પાયે દ્વારા.
>> તમે યાદ રહ્યા છીએ જરૂરી ગાદી ઉમેરો.
પાછળથી તે પર વધુ.
અને પછી, પણ ઊભી માપ બદલો.
બરાબર.
તેથી આ થોડો વધુ પ્રયત્ન રહ્યું છે તે થઈ ગયું કોણ કરતાં જટિલ છે, પરંતુ
શું સમાન છે કે copy.c ઇચ્છા છે, ફરીથી, ખૂબ જ ઉપયોગી સાબિત.
, Copy.c ફાઈલ ખોલે છે યાદ રાખો આ માટે હેડર જાણકારી સુધારે
outfile, પછી scanline માં વાંચો, પિક્સેલ બાય પિક્સેલ, દરેક પિક્સેલ લખી
આઉટપુટ ફાઈલ માતાનો scanline માં.
>> તેથી ફરી, તમારું પ્રથમ પગલું કદાચ કદાચ સી.પી., copy.c, resize.c માટે કરી
તમારા Pset5 ડિરેક્ટરીમાં.
તમે તેને નકલ પહેલાં યાદ રાખો, તમે સમજી તેની ખાતરી કરવા માટે
ખૂબ જ સારી રીતે copy.c.
બરાબર.
>> તેથી આપણે એક ફાઇલ ખોલીએ.
તમે તે કરવા માટે કેવી રીતે ખબર.
હું તમને કે છોડી જાઉં છું.
આગળ, હેડર માહિતી અપડેટ outfile માટે.
આપણે એક નવી બીટમેપ હોય છે, અમે નવી હેડર માહિતી છે.
અહિયાં શું બદલવાનું છે?
વેલ, આ ફાઈલ માપ બદલી રહ્યું છે અમે વધુ હોય રહ્યા છીએ, કારણ કે
પહેલાં કરતાં પિક્સેલ્સ.
ઇમેજ માપ પણ, આમ, છે છે, ફેરફાર કરી આ
પહોળાઈ અને ઊંચાઈ.
>> તેથી જે ચલો તે બરાબર છે?
સારું, તમે હેડર માં જુઓ માહિતી, તમે ત્યાં છે જુઓ
કુલ રજૂ કરે biSizeImage, બાઈટમાં ઇમેજ માપ,
પિક્સેલ અને ગાદી સમાવેશ થાય છે.
biWidth ઇમેજ પહોળાઇ છે પિક્સેલમાં, પેડિંગ બાદ.
biHeight ની ઊંચાઇ છે પિક્સેલમાં છબી.
અને તેથી તે રહેલ છે સ્ટ્ર્ક્ટ્સ BITMAPFILEHEADER છે અને
BITMAPINFOHEADER.
તમે દ્વારા જે એક કે જે કહી શકે છે bmp.h જવા અને જોયા
BITMAPINFOHEADER સ્ટ્રક્ટ અને જોઈ ચલો ત્યાં યાદી થયેલ છે, જે.
>> તેથી outfiles હેડર સુધારવા માટે માહિતી, તમે કરવા માંગો છો જઈ રહ્યાં છો
આ તે મૂલ્યો બદલી ઊંચાઇ અને પહોળાઇ.
પરંતુ લાગે છે, તમે કેટલાક જરૂર પડી શકે છે માટે infile હેડર જાણકારી
પછી, તેથી શ્રેષ્ઠ બંને સાચવી રાખે.
પરંતુ તમારા ચલ સાથે ખૂબ જ સ્પષ્ટ થઈ નામો કે જેથી તમે ન આકસ્મિક
ખોટો કિંમતો લખો outfile માટે હેડર.
>> તેથી હવે આપણે માં વાંચવા માટે વિચાર પાંચ scanline પિક્સેલ બાય પિક્સેલ.
ફરીથી, અમે અમારા વિશ્વાસુ માટે ચાલુ રહ્યા છીએ I / O લાઇબ્રેરી ફાઇલ, અને જુઓ
પાંચ fread કાર્ય કરે છે.
fread સ્ટ્રક્ટ માટે નિર્દેશક લે કે બાઇટ્સ સમાવે છે
તમે વાંચી રહ્યા છો, દરેક માપ તમે વાંચી રહ્યા છો તે તત્વ -
ફરીથી, sizeof ઉપયોગી થઈ રહ્યું છે અહીં કાર્ય છે, જે સંખ્યા
તમે તે માપ, કદ તત્વો, પછી છેવટે વાંચન, અને
inpointer, ફાઈલ કે તમે વાંચી રહ્યા છો.
તેથી તમે નંબર તત્વો લઇ રહ્યા છીએ inpointer થી કદ, અને
માહિતી માં મૂકવા.
>> હવે તે આડા માપ બદલો સમય છે.
n એ દરેક પિક્સેલ માટે પછી, 2 સમકક્ષ હોય માટે infile, અમે તેને લખી રહ્યા છીએ
બે વખત outfile માં.
આપણે કઈ રીતે ફાઈલો લખી શકું?
વેલ, અમે જ fwrite કાર્ય હોય છે, તેથી અમે સ્ટ્રક્ટ માટે નિર્દેશક ભર્યું છે
કે તમે છો કે બાઇટ્સ સમાવે પત્ર, અને પછી અમે પાસ
કદ, સંખ્યા, અને આઉટપુટ, જ્યાં તમે તે લખી શકાય જઈ રહ્યાં છો.
અને પછી એક પ્રક્રિયા પુનરાવર્તન, હશે લૂપ માટે સક્ષમ એક સરળ પુનરાવર્તન.
>> પરંતુ અમે યાદ કરવાની જરૂર છે સાઇન ગાદી ઉમેરવા
ગાદી ખ્યાલ કે, સાથે સાથે, છે દરેક પિક્સેલ ત્રણ કરડવાથી છે, પરંતુ
દરેક scanline જોઈએ કદ 4 બાઇટ્સ એક બહુવિધ છે.
તેથી પિક્સેલોની સંખ્યા ન હોય તો એક 4 બહુવિધ, અમે કેટલીક ઉમેરવાની જરૂર છે
માત્ર zeroes છે જે ગાદી,.
હવે, તે થઈ ગયું કોણ જેમ નહિં પણ, અને વિપરીત નકલ, તો પછી infile છબી અને
outfile ફાઈલ વિવિધ હોય છે વિવિધ ગાદી તેઓ કારણ કે
વિવિધ પહોળાઈને.
>> બરાબર.
તેથી કદાચ એક સૂત્ર છો અહીં હાથમાં આવે છે.
હું તે જાણવા માટે આપની તે છોડી દો, પરંતુ પડશે ગાદી લખવા માટે, તમે કહો કે,
સાથે સાથે, તે માત્ર એક સરળ fputc કાર્ય છે, રાજ્ય બહા માં પસાર
પછી તમે લખવા માંગો છો, અને તે ફાઈલ નિર્દેશક કે જો તમારી પાસે
માટે લખવા માંગો છો.
તેથી હવે અમે આડા પુન: માપ કરી લીધી છે અને પછી, ગાદી ઉપયોગ
જો તમે તમારી ફાઈલ ખસેડવા જરૂર યાદ રાખો કે સ્થિતિ સૂચક, તમે કારણ કે
ગાદી માં fread કરી શકતા નથી.
જેથી તમે ખાતરી કરો કે બનાવવા માંગો છો તમારી ફાઈલ infile માં સ્થિતિ સૂચક
યોગ્ય સમયે છે.
અમે કરવા માંગો છો કારણ કે ઊભી માપ બદલો.
અમે હમણાં જ આડા તે પટ કરી શકતા નથી દરેક પંક્તિ જરૂર છે
n વખત નકલ કરવાની જ.
>> હવે, વિવિધ ઘણા છે આ કરવા માટે માર્ગો.
તેથી, અમે, એક લખાણ લખે પદ્ધતિ વાપરી શકો છો અમે પિક્સેલ તમામ યાદ કે
આપેલ ઝાકઝમાળ પંક્તિ, અને પછી અમે તે એરે લખી
ઘણી વખત જરૂરી છે.
અથવા જ્યાં recopy પદ્ધતિ છે, infile માં એક પંક્તિ વાંચીને
અને પછી outfile માં તે લખ્યું પેડિંગ ઉમેરી રહ્યા છે, અમે fseek
મૂળ પંક્તિ શરૂઆત પાછળ, અને પછી આડી પુનરાવર્તન
ત્યાંથી માપ બદલવાની.
સંબંધિત રીતે પદ્ધતિ છે, જોકે, તો તમે દરેક પિક્સેલ પુનરાવર્તન કરવા માંગો છો
n વખત, અને દરેક પંક્તિ હોય સાથે સાથે n વખત ગાવામાં આવે છે.
>> કે સાથે, તમે બીટમેપ પડશે જીવન કરતાં મોટી.
મારું નામ Zamyla છે, અને આ CS50 છે.