>> [இசை கேட்கிறது]
>> ZAMYLA சான்: நாம் அடியாக மறுஅளவீடு விஷயங்களை.
மறுஅளவீடு, பயனர் வழியாக, கடக்கும் கட்டளை வரி, ஒரு பிட்மா படம் என்று
அவர்கள் உங்களுக்கு பல அளவிட வேண்டும் அவர்கள், கடந்து அந்த
கட்டளை வரியில்.
இதை நாம் எப்படி செய்ய வேண்டும்?
>> சரி, முதல் முதல் விஷயங்கள், நாம் தான் படிகள் இந்த உடைந்து.
நீங்கள் infile திறக்க வேண்டும் போகிறோம் அவர்கள் உங்களுக்கு கொடுக்கிறார்கள், அதே போல் அந்த
உருவாக்க மற்றும் outfile திறக்க நீங்கள் வைக்க போகிறோம்
உள்ளே அளவு படத்தை
பின்னர், நீங்கள் பெரிதாக்க, மற்றும் ஏனெனில் அது ஒரு பிட்மாப் ஏனெனில், அது ஒரு தலைப்பு, அதனால்
நீங்கள் தலைப்பு மேம்படுத்த போகிறோம் outfile செய்ய தகவல்,
மற்றும் உள்ளே என்று எழுத
பின்னர், நீங்கள் ஒரு படிக்க போகிறோம் infile என்ற scanline,
பிக்சல் மூலம் பிக்சல், கிடைமட்டமாக பெரிதாக்க மற்றும் அந்த பிக்சல்கள் எழுதி
outfile செய்ய, குறிப்பிட்ட பயனர் அளவு.
>> நீங்கள் நினைவில் கொள்ள போகிறோம் தேவையான திணிப்பு சேர்க்க.
பின்னர் மேலும்.
பின்னர், செங்குத்தாக அளவை.
சரி.
எனவே, இந்த ஒரு சிறிய பிட் மேலும் போகிறது இது இறைவனின் விட சிக்கலான, ஆனால்
என்ன ஒத்த என்று copy.c செய்யும், மீண்டும், மிகவும் பயனுள்ளதாக நிரூபிக்க.
, Copy.c ஒரு கோப்பு திறக்கும் என்று ஞாபகம் தலைப்பு தகவல் மேம்படுத்துகிறது
outfile செய்ய, பின்னர் scanline ஒரு கூறுகிறது, பிக்சல் மூலம் பிக்சல், ஒவ்வொரு பிக்சல் எழுதி
வெளியீடு கோப்பு scanline ஒரு.
>> எனவே மீண்டும், உங்கள் முதல் படி ஒருவேளை வலிமை CP, copy.c, resize.c வேண்டும்
உங்கள் PSET5 அடைவில்.
நீங்கள் அதை நகலெடுத்து முன், எனினும் நினைவில், நீங்கள் புரிந்து கொள்ள வேண்டும் என்று உறுதி செய்ய
மிகவும் முழுமையாக copy.c.
சரி.
>> எனவே ஒரு கோப்பு திறந்து விடுங்கள்.
நீங்கள் அதை எப்படி செய்வது என்று எனக்கு தெரியும்.
நான் உங்களுக்கு என்று விட்டு போகிறேன்.
அடுத்து, தலைப்பு தகவல் புதுப்பிக்க outfile செய்ய.
நாம் ஒரு புதிய படங்கள் வேண்டும், ஏனெனில், நாம் புதிய தலைப்பு தகவல் வேண்டும்.
இங்கே என்ன மாறி விட்டது?
சரி, கோப்பின் அளவு மாற்ற போகிறது நாம் இன்னும் செய்ய போகிறோம், ஏனெனில்
முன்பை விட படப்புள்ளிகள்.
பட அளவு மேலும், இதனால், ஆகிறது என, மாற்ற போகிறது
அகலம் மற்றும் உயரம்.
>> எனவே இது மாறிகள் அந்த சரியாக இருக்கும்?
சரி, நீங்கள் தலைப்பு இருக்கும் என்றால் தகவல், நீங்கள் அங்கு பார்க்க
மொத்த பிரதிநிதித்துவப்படுத்தும் biSizeImage, பைட்டுகள் படத்தை அளவு,
பிக்சல்கள் மற்றும் திணிப்பு உட்பட.
biWidth படத்தை அகலம் பிக்சல்கள், திணிப்பு கழித்து.
biHeight உயரம் ஆகிறது பிக்சல் படத்தை.
அதனால் அந்த உள்ளன structs BITMAPFILEHEADER மற்றும்
BITMAPINFOHEADER.
நீங்கள் இது எந்த ஒரு சொல்ல முடியும் bmp.h சென்று பார்த்து
BITMAPINFOHEADER struct மற்றும் பார்த்து மாறிகள், அங்கு பட்டியலிடப்பட்டுள்ளது இது.
>> எனவே outfiles தலைப்பு புதுப்பிக்க தகவல், நீங்கள் வேண்டும் போகிறோம்
அந்த மதிப்புகள் மாற்ற உயரம் மற்றும் அகலம்.
ஆனால் வாய்ப்புகளை நீங்கள் சில வேண்டும் infile, தலைப்பு தகவல்
பின்னர், மிக சிறந்த இரண்டு கண்காணிப்பதற்கான.
ஆனால் உங்கள் மாறி மிகவும் தெளிவாக இருக்க வேண்டும் பெயர்கள் என்று நீங்கள் தற்செயலாக
தவறான மதிப்புகள் எழுத outfile செய்ய தலைப்பு.
>> எனவே இப்போது படித்து பெற அனுமதிக்க scanline பிக்சல் மூலம் பிக்சல்.
மீண்டும், நாங்கள் எங்கள் நம்பகமானவர் திரும்ப போகிறோம் நான் / ஓ நூலகம் கோப்பு, மற்றும் பார்
fread செயல்பாடு.
fread ஒரு struct ஒரு சுட்டிக்காட்டி எடுக்கிறது என்று பைட்டுகள் கொண்டிருக்கும் என்று
நீங்கள் படித்து, ஒவ்வொரு அளவு நீங்கள் படித்து என்று உறுப்பு -
மீண்டும், sizeof பயனுள்ளதாக இருக்கும் இங்கே செயல்பாடு, எண்ணிக்கை
நீங்கள் அந்த அளவு, அளவு கூறுகள், பின்னர் இறுதியாக படித்தல், மற்றும்,
inpointer, கோப்பு என்று நீங்கள் படித்து நீங்கள்.
எனவே நீங்கள் பல கூறுகளை எடுத்து வருகிறோம் inpointer இருந்து அளவு, மற்றும்
தரவு அவற்றை.
>> இப்போது அது கிடைமட்டமாக அளவை நேரம்.
N ஒவ்வொரு பிக்சல் பின்னர், 2 சமமாக இருந்தால், infile, நாம் அதை எழுத போகிறோம்
இருமுறை outfile செய்ய வேண்டும்.
எப்படி நாம் கோப்புகளை எழுத வேண்டும்?
சரி, நாம் fwrite செயல்பாடு, அதனால் நாம் struct என்று சுட்டிக்காட்டி வந்திருக்கிறேன்
என்று நீங்கள் என்று பைட்டுகள் கொண்டிருக்கிறது எழுத, மற்றும் நாம் கடந்து
அளவு, எண்ணிக்கை, மற்றும் வெளியீடு, அங்கு நீங்கள் என்று எழுத வேண்டும் போகிறோம்.
பின்னர் ஒரு செயல்முறை மீண்டும், இருக்கும் லூப் முடியும் ஒரு எளிய பங்கேற்பு.
>> ஆனால் நாம் நினைவில் கொள்ள வேண்டும் உள்ளே திணிப்பு சேர்க்க வேண்டும்
திணிப்பு கருத்து என்று, நன்றாக இருக்கிறது ஒவ்வொரு பிக்சல் மூன்று கடி, ஆனால்
ஒவ்வொரு scanline வேண்டும் அளவு 4 பைட்டுகள் ஒரு பல இருக்கும்.
எனவே பிக்சல்கள் எண்ணிக்கை இல்லை என்றால் ஒரு 4 பல, நாம் சில சேர்க்க வேண்டும்
வெறும் zeroes இது திணிப்பு,.
இப்போது, அதை செய்ய யார் போல், போல் நகல், பின்னர், infile படம் மற்றும்
outfile செய்ய கோப்பில் வேண்டும் வெவ்வேறு திணிப்பு அவர்கள் இருப்பதால்
வெவ்வேறு அகலங்கள்.
>> சரி.
எனவே ஒருவேளை ஒரு சூத்திரம் என்று இங்கே கைக்குள் வந்து.
நான் அதை கண்டுபிடிக்க நீங்கள் அதை விட்டு, ஆனால் நான் திணிப்பு எழுத, என்று நீங்கள் சொல்ல,
சரி, அது ஒரு எளிய fputc விழா, பாத்திரம் கடந்து செல்லும்
நீங்கள் எழுத வேண்டும், என்று கோப்பு சுட்டிக்காட்டி என்று நீங்கள்
எழுத வேண்டும்.
எனவே இப்போது நாம், கிடைமட்டமாக அளவு என்று பின்னர், திணிப்பு பயன்படுத்தப்படும்
உங்கள் கோப்பு நகர்த்த வேண்டும் என்று நினைவில் நிலை காட்டி, நீங்கள்
திணிப்பு fread முடியாது.
எனவே நீங்கள் உறுதி செய்ய வேண்டும் உங்கள் கோப்பு infile நிலை காட்டி
சரியான நேரத்தில் ஆகிறது.
நாங்கள் விரும்பவில்லை, ஏனென்றால் செங்குத்தாக அளவை.
நாம் தான், கிடைமட்டமாக அதை நீட்டி முடியாது ஒவ்வொரு வரிசையில் வேண்டும், ஏனெனில்
n முறை நகலெடுக்க வேண்டும்.
>> இப்போது, வேறு பல உள்ளன இதை செய்ய வழிகள்.
எனவே, நாம், ஒரு மாற்றியமைத்தன முறையை பயன்படுத்தலாம் நாம் பிக்சல்கள் அனைத்து நினைவில்
ஒரு குறிப்பிட்ட ஒரு வரிசையில் வரிசையில், நாம் அந்த வரிசையில் எழுத
பல முறை தேவை.
அல்லது அங்கு recopy முறை உள்ளது, infile ஒரு வரிசையில் படித்த பிறகு
பின்னர் outfile கொண்டு என்று எழுதி, திணிப்பு சேர்த்து, நாங்கள் fseek
அசல் வரிசையில் தொடக்கத்தில் மீண்டும், பின்னர் கிடைமட்ட மீண்டும்
அங்கு இருந்து பெரிதாக்க வேண்டும்.
எந்த முறை, எனினும், நீங்கள் ஒவ்வொரு பிக்சல் மீண்டும் வேண்டும்
n முறை, மற்றும் ஒவ்வொரு வரிசையில் இருக்க வேண்டும் அதே N முறை திரும்ப திரும்ப.
>> என்று, நீங்கள் பிட்மாப் வேண்டும் வாழ்க்கையை விட பெரிய.
என் பெயர் Zamyla உள்ளது, மற்றும் இந்த CS50 உள்ளது.