[இசை கேட்கிறது] ZAMYLA சான்: இது மிஸ் ஸ்கார்லெட் இருந்தது குத்துவிளக்கை கொண்டு. ஹூட்யூனிட்? சரி, நாம் கண்டுபிடிக்க போகிறோம். குழு விளையாட்டு துப்பு, நீங்கள் போகலாம் ஒரு உடல் சிவப்பு படத்தை வழங்கப்படும். அந்த படத்தை மிகவும் சிவப்பு மற்றும் ஆகிறது புள்ளிகள், மற்றும் உங்கள் வேலை ரகசிய செய்தியை வெளிப்படுத்த. பொதுவாக நீங்கள் ஒரு சிவப்பு வழங்கப்படும் பூதக்கண்ணாடி, அல்லது ஒரு சிவப்பு திரை என்று ரகசிய செய்தியை வெளிப்படுத்த. சரி, நாம் என்று நையாண்டி செய்ய போகிறீர்கள். ஹூட்யூனிட் நீங்கள் ஒரு பிட்மாப் படத்தை கொடுத்து வருகிறோம் என்று, மிகவும் புள்ளிகள் மற்றும் சிவப்பு தெரிகிறது பின்னர் ஹூட்யூனிட் நிரலை ஒரு மறைக்கப்பட்ட செய்தி வெளிப்படுத்த. எனவே வழிமுறைகளை இந்த உடைக்கலாம். முதல், நீங்கள் கோப்பை திறக்க வேண்டும் - நீங்கள் கொடுத்த வருகிறோம் என்று துப்பு. பின்னர் ஒரு உருவாக்க தீர்ப்பு பிட்மேப் கோப்பு. நீங்கள் படங்கள் மேம்படுத்த வேண்டும் தீர்ப்பு outfile செய்ய தகவல் தலைப்பு. பின்னர் மேலும். பின்னர் நீங்கள் படிக்க போகிறோம் துப்பு, scanline, பிக்சல் மூலம் பிக்சல், பிக்சல் வண்ணங்களை மாற்றி தேவையான, மற்றும் எழுதும் தீர்ப்பை அந்த - பிக்சல் மூலம் பிக்சல் தீர்ப்பு scanline. நாம் எப்படி இது பற்றி நான் தொடங்க வேண்டும்? சரி, அதிர்ஷ்டவசமாக, நாம் எப்படி copy.c வேண்டும் விநியோக குறியீடு. இந்த நிரூபிக்க போகிறது எங்களுக்கு மிகவும் பயனுள்ளதாக இருக்கும். Copy.c, ஒரு கோப்பு திறக்கும் என்று கூறுகிறது பின்னர் infile, தலைப்பு, மற்றும் மேம்படுத்தல்கள் outfile செய்ய தான் தலைப்பு. பின்னர் அதை ஒவ்வொரு பிக்சல் கூறுகிறது பின்னர் scanline, பிக்சல் மூலம் பிக்சல், மற்றும் outfile கொண்டு அந்த பிக்சல் எழுதுகிறார். எனவே, உங்கள் முதல் படி வலிமை பின்வரும் இயக்க இருக்கும் டெர்மினல் கட்டளை - cp copy.c whodunit.c. இந்த ஒரு பிரதியை உருவாக்கும் copy.c whodunit.c பெயரிட்டார். எனவே திறக்க எங்கள் முதல் படி கோப்பு, நன்றாக, ஒரு சரியான இல்லை copy.c. என்று பிரதி அதனால் நான் பார்க்க நீங்கள் விட்டு விடுகிறேன். நாம் இந்த pset உள்ள கையாள்வதில் என்ன கோப்பு நான் / ஓ, அடிப்படையில் கோப்புகளை எடுத்து, வாசித்தல், எழுதுதல், அவற்றை திருத்த. எப்படி நீங்கள் முதலில் ஒரு கோப்பு திறக்க எப்படி? சரி, நீங்கள் ஒரு கோப்பின் அறிவிக்க போகிறீர்கள் சுட்டிக்காட்டி, பின்னர் நீங்கள் அழைக்கிறீர்கள் செயல்பாடு fopen. பாதை, அல்லது அந்த பெயர் அனுப்ப கோப்பு, பின்னர் நீங்கள் விரும்பும் முறையில் உள்ளே அந்த கோப்பு திறக்க ஆர் கடந்து செல்லும் திறக்கும் வாசிப்பு foo.bmp. அதேசமயம் ஒரு W கடந்து கொண்டு fopen சாப்பிடுவேன் திறந்த bar.bmp, கோப்பு எழுத உண்மையில் இது எடிட்டிங். எனவே இப்போது நாம் கோப்பை திறந்து விட்டேன் என்று, எங்கள் அடுத்த தலைப்பு தகவல் புதுப்பிக்க ஆகிறது outfile செய்ய. ஒரு தலைப்பு தகவல் என்ன? சரி, முதலில் நாம் அறிந்து கொள்ள வேண்டும் என்ன ஒரு பிட்மாப் ஆகிறது. ஒரு பிட்மாப் ஒரு எளிய ஆகிறது பைட்டுகள் ஏற்பாடு. அவர்கள் இந்த கோப்பு அறிவித்தார் ஒரு கொத்து இங்கே, bmp.h, என்ன ஒரு பிட்மாப் தகவல் உண்மையில் வெளியே செய்யப்படுகிறது. ஆனால் நாம் உண்மையிலேயே அக்கறை இருக்கிறது பிட்மேப் கோப்பு தலைப்பு, இங்கே, மற்றும் இங்கே படங்கள் தகவல் தலைப்பு,. தலைப்பு ஒரு ஜோடி உருவாக்குகின்றது மிகவும் பயனுள்ளதாக அமையும் என்று மாறிகள். இது biSizeImage உள்ளது பைட்டுகள் படத்தை மொத்த அளவு. இந்த பிக்சல்கள் மற்றும் திணிப்பு அடங்கும். பேட்டிங் மிகவும் முக்கியமானது, ஆனால் நாம் பின்னர் அது கிடைக்கும். BiWidth அகலம் பிரதிபலிக்கிறது பிக்சல்கள் கழித்து திணிப்பு படத்தை. BiHeight பின்னர் உயரம் ஆகிறது பிக்சல் படத்தை. பின்னர் BITMAPFILEHEADER மற்றும் நான் குறிப்பிட்டுள்ள BITMAPINFOHEADER, முன்னதாக, அந்த குறிப்பிடப்படுகின்றன structs என. எனவே, நீங்கள் கோப்பு தலைப்பு அணுக முடியாது தன்னை, ஆனால் நீங்கள் பெற வேண்டும் என்று நான் நினைக்கிறேன் உள்ளே அந்த மாறிகள். சரி. நாம் எப்படி தலைப்பு தகவல் புதுப்பிக்க என்ன? சரி, முதலில் நாம் பார்க்க வேண்டும் நாம் என்பதை எந்த தகவல் மாற்ற வேண்டும் இங்கு, infile, துப்பு, outfile செய்ய, தீர்ப்பு. எதையும் இந்த வழக்கில் மாறி வருகிறது? சரி, உண்மையில், நாம் போகிறோம், ஏனெனில் நிறங்கள் மாற்ற வேண்டும். நாம் கோப்பு மாற்ற போவதில்லை அளவு, படத்தை அளவு, அகலம், அல்லது உயரம். எனவே நீங்கள் இப்போது அனைத்து சரிதான் ஒவ்வொரு பிக்சல் நகல். சரி. எனவே இப்போது எப்படி நாம் உண்மையில் பார்க்க வேண்டும் கோப்பு இருந்து ஒவ்வொரு பிக்சல் படிக்க முடியும். மற்றொரு கோப்பு நான் / ஓ செயல்பாடு நாடகம் வரும் - fread. இது struct ஒரு சுட்டிக்காட்டி உள்ள எடுக்கிறது என்று பைட்டுகள் கொண்டிருக்கும் என்று நீங்கள் படித்து. எனவே உங்களுக்கு என்று ஒரு வாசிப்பு. பின்னர் நீங்கள் இது, ஒரு அளவு கடந்து ஒவ்வொரு உறுப்பு அளவு என்று நீங்கள் படிக்க வேண்டும். இங்கே, செயல்பாடு sizeof கைக்குள் வரும். நீங்கள், பல கடந்து இது கூறுகள் எண்ணிக்கை பிரதிநிதித்துவம் வாசிக்க அளவு. பின்னர் இறுதியாக, inptr, இது நீங்கள் அந்த கோப்பு சுட்டிக்காட்டி படிக்க போகிறேன். எனவே அந்த உறுப்புகள் அனைத்தும் உள்ளே இருக்கின்றன inptr அவர்கள் தரவு போகிறோம். ஒரு சிறிய உதாரணம் பார்க்கலாம். நான் தரவு இரண்டு நாய்கள் படிக்க வேண்டும் என்றால், சரி, நான் அதை இரண்டு வழிகளில் ஒன்று செய்ய முடியும். நான் ஒன்று அளவு இரண்டு பொருட்களை படிக்க முடியும் என் inptr இருந்து நாய், அல்லது நான் படிக்க முடியும் ஒரு இரண்டு நாய்கள் அளவு எதிர்க்கவில்லை. எனவே நீங்கள் பார்க்க என்று வழி பொறுத்து நீங்கள், நீங்கள் அளவு மற்றும் பல ஏற்பாடு பைட்டுகள் அதே எண்ணை படிக்க முடியும். எனவே, இப்பொழுது மாற்ற வேண்டும் நாம் வேண்டும் என பிக்சல் நிறம். நீங்கள் மீண்டும் bmp.h பார்த்தால், பின்னர் நீங்கள் கீழே காணலாம் RGBTRIPLEs, மற்றொரு struct எங்கே அவர்கள் மூன்று பைட்டுகள் கொண்டதாகும். ஒன்று, rgbtBlue, rgbtGreen, மற்றும் rgbtRed. எனவே இந்த ஒவ்வொரு அளவு குறிக்கப்படுகிறது நீல, பச்சை அளவு, மற்றும் இந்த பிக்சல் உள்ளே சிவப்பு, அளவு, அங்கு ஒவ்வொரு அளவு ஒரு குறிப்பிடப்படுகின்றன எண்ம. எனவே FF0000 இருந்தால் ஒரு நீல நிற இருக்கும், அது நீல இருந்து செல்கிறது, ஏனெனில் சிவப்பு, பச்சை. பின்னர் அனைத்து F வெள்ளை இருக்கும். தான் smiley.bmp பாருங்கள், அழைத்து செல்லலாம் இது நீங்கள் உங்கள் விநியோகம் குறியீடு வேண்டும். நீங்கள் ஒரு படத்தை திறக்க என்றால் பார்வையாளர், பின்னர் நீங்கள் ஒரு சிவப்பு ஸ்மைலி பார்க்க. ஆனால் நாம் பிறகு, ஒரு ஆழமான முழுக்கு எடுத்து பார்க்க அந்த அமைப்பு அது தான் பிக்சல்கள் ஆகிறது. நாம் வெள்ளை பிக்சல்கள் வேண்டும், பின்னர் சிவப்பு பிக்சல்கள். அனைத்து பின்னர், வெள்ளை ffffff, மற்றும் நான் உங்களுக்கு உள்ள வண்ணமாக நீ சிவப்பு பிக்சல்கள் இங்கே, நீங்கள் அவர்கள் 0000ff என்று பார்க்கிறீர்கள். ஜீரோ நீலம், பூஜ்யம், பச்சை, மற்றும் முழு சிவப்பு. மற்றும் ஸ்மைலி எட்டு பிக்சல்கள் அளவில் உள்ளது என்பதால், நாம் எந்த திணிப்பு இல்லை. எல்லாம் சரி. நான் வெவ்வேறு மதிப்புகள் ஒதுக்க வேண்டும் என்றால் ஒரு RGBTRIPLE மற்றும் நான் விரும்பினேன் அது பச்சை செய்ய, பின்னர் நான் என்ன செய்ய வேண்டும் ஆகிறது நான் என்ற ஒரு RGBTRIPLE, அறிவிக்க வேண்டும் மூன்று, பின்னர் ஒவ்வொரு அணுக என்று struct நான் உள்ள பைட் டாட் ஆபரேட்டர் பயன்படுத்த வேண்டும். எனவே triple.rgbtBlue, நான் 0 என்று ஒதுக்க. பசுமை நான் அதை முழுமையாக ஒதுக்க முடியாது - எந்த எண், உண்மையில், 0 மற்றும் ff இடையே. பின்னர் சிவப்பு, நான் 0 சொல்ல போகிறேன். எனவே எனக்கு ஒரு பச்சை பிக்சல் கொடுக்கிறது. அடுத்து, நான் பார்க்க என்ன வேண்டும் என்றால் ஏதாவது மதிப்பு? நான் சரிபார்க்கிறது என்று ஒன்று உண்டு மூன்று தான் rgbtBlue மதிப்பு என்பது FF பின்னர் அச்சு, "நான் உணர்கிறேன் நீல! "விளைவாக. இப்போது, அர்த்தம் இல்லை பிக்சல், நீலம் என்று? பிக்சல் பச்சை மற்றும் சிவப்பு மதிப்புகள் ஏனெனில் மேலும் அல்லாத 0 மதிப்புகள் முடியும். இந்த பொருள் என்று அனைத்து, மற்றும் அனைத்து என்று இந்த சோதனை ஒரு முழு நீல நிறம். ஆனால் அனைத்து பிக்சல்கள் மேலும் பகுதியளவு முடியும் இந்த வண்ண மதிப்புகளை, இங்கே அடுத்த உதாரணம். இது ஒரு சிறிய கடினமாக பார்க்க தான் இந்த படத்தை இப்போது என்ன. இந்த ஒரு சிறிய பிட் மேலும் தெரிகிறது நீங்கள் வழங்கப்படும் என்று clue.bmp. இப்போது, உடல், நீங்கள் இதை தீர்க்க வேண்டும், மூலம், சிவப்பு நிறைய உள்ளது, ஏனெனில் படத்தை ஒரு சிவப்பு திரை வைத்திருக்கும் அதனால் மற்ற நிறங்கள் தோன்றும் என்று. நாம் எப்படி கேட்ச் இந்த பிரதிபலிக்கும் என்ன? சரி, நாம் அனைத்து சிவப்பு நீக்க வேண்டும் படத்தை முழுவதுமாக. எனவே நாம் ஒவ்வொரு அமைக்க வேண்டும் என்று செய்ய 0 பிக்சல் சிகப்பு மதிப்பு. அதனால் படத்தை ஒரு சிறிய இருக்கும் நாம் எந்த சிவப்பு எங்கே இந்த, போன்ற பிட் தேவையில்லை. நாம் மறைந்த செய்தியை ஒரு பார்க்க முடியும் இன்னும் கொஞ்சம் தெளிவாக இப்போது. இது மற்றொரு ஸ்மைலி முகம் தான். அல்லது ஒருவேளை நாம் மற்றொரு முறை பயன்படுத்த முடியும். ஒருவேளை, நாம் அடையாளம் காட்ட முடியும் சிவப்பு பிக்சல்கள் அனைத்து - என்று, பிக்சல்கள் அனைத்து ஆகிறது 0 நீல, 0, பச்சை, மற்றும் 0 சிவப்பு - மற்றும் வெள்ளை அந்த மாற்ற. எங்கள் படத்தை பார்க்க வேண்டும் இந்த மாதிரி ஏதாவது. பார்க்க ஒரு சிறிய பிட் எளிதாக. கண்டறிய பல வழிகள் நிறைய உள்ளன இரகசிய செய்தி அத்துடன், வண்ண கையாளுதல் கையாள்வதில். ஒருவேளை நீங்கள் முறைகளில் ஒன்றாக பயன்படுத்த வேண்டும் நான் மேலே குறிப்பிட்ட அந்த. மற்றும் கூடுதலாக, நீங்கள் வேண்டும் சில நிறங்கள் அதிகரிக்க அந்த வெளியே கொண்டுவர. எனவே இப்போது நாம் பிக்சல் மாறிவிட்டேன் என்று நிறம், அடுத்த நாம் தான் அவர்களை எழுத வேண்டும் பிக்சல் மூலம் scanline உள்ள, பிக்சல். இன்னும் மீண்டும், நீங்கள் திரும்பி பார்க்க வேண்டும் என்று நான் நினைக்கிறேன் நீங்கள் நகல் இல்லை என்றால், copy.c செய்ய அது ஏற்கனவே, மற்றும் fwrite பார்க்க தரவு எடுக்கும் எந்த செயல்பாடு, ஒரு சுட்டிக்காட்டி பைட்கள் உள்ளன என்று struct என்று நீங்கள் அளவு, படித்து என்று பொருட்களை, பொருட்களை எண்ணிக்கை, பின்னர் outptr - அந்த கோப்புகளை இலக்கு. நீங்கள் பிக்சல்கள் எழுத பிறகு, நீங்கள் மேலும் திணிப்பு எழுத வேண்டும். திணிப்பு என்பது என்ன? நன்றாக, ஒவ்வொரு rgbt பிக்சல் மூன்று பைட்டுகள் நீண்ட ஆகிறது. ஆனால், ஒரு பிட்மே படத்தை scanline நான்கு பைட்டுகள் ஒரு பல இருக்க வேண்டும். மற்றும் பிக்சல்கள் எண்ணிக்கை இல்லை என்றால் ஒரு நான்கு பல, நாம் சேர்க்க வேண்டும் இந்த திணிப்பு. பேட்டிங் வெறும் 0 க்கள் குறிப்பிடப்படுகின்றன. எனவே, எப்படி நாம் எழுத, அல்லது இந்த படிக்க வேண்டும்? சரி, அது மாறிவிடும் நீங்கள் முடியாது என்று உண்மையில் fread திணிப்பு, ஆனால் நீங்கள் அதை கணக்கிட. இந்த வழக்கில், துப்பு மற்றும் தீர்ப்பு அதே அகல வேண்டும், அதனால் திணிப்பு அதே ஆகிறது. மற்றும் திணிப்பு, நீங்கள் பார்க்க வேண்டும் என copy.c உள்ள, கணக்கிடப்படும் கீழே சூத்திரம் - bi.biWidth முறை sizeof (RGBTRIPLE) சாப்பிடுவேன் எவ்வளவு பைட்டுகள் bmp எங்களுக்கு கொடுக்க ஒவ்வொரு வரிசையில் உள்ளது. அங்கு இருந்து, modulos விரைவாக 4 கணக்கிட முடியும் எப்படி பல பைட்டுகள் சேர்க்க வேண்டும் என்று அன்று பைட்டுகள் பல ஒவ்வொரு வரிசையில் நான்கு ஆகிறது. இப்போது நாம் சூத்திரம் வேண்டும் என்று நாம் வேண்டும் எவ்வளவு திணிப்பு, இப்போது நாம் அதை எழுத முடியும். இப்போது, நான் முன்பு கூறியது, திணிப்பு வெறும் 0 க்கள் ஆகிறது. அந்த வழக்கில், நாம் தான் வைத்து இந்த வழக்கில் ஒரு 0 ஒரு கரி, எங்கள் outptr - எங்கள் outfile. அதனால் தான் fputc இருக்க முடியும் 0, கமா outptr. எனவே, நாம் படித்து வருகிறோம் போது எங்கள் கோப்பு, கோப்பு I / O பாதையில் வைத்து எங்கள் ஏதாவது அந்த கோப்புகளை நிலை கோப்பு நிலையை காட்டி என்று. ஒரு கர்சர் என நினைக்கிறேன். அடிப்படையில், அது ஒவ்வொரு முறையும் முன்னெடுக்கிறது நாம் fread, ஆனால் நாம் என்று கூட, அதை கட்டுப்படுத்த. கோப்பு நிலையை காட்டி நகர்த்த, நீங்கள் செயல்பாடு fseek பயன்படுத்த முடியும். Inptr கோப்பு பிரதிபலிக்கிறது எங்கே நீங்கள் தேடும் என்று சுட்டிக்காட்டி, அளவு பைட்டுகள் எண்ணிக்கை என்று நீங்கள் பிறகு நகர்த்து, மற்றும் வேண்டும் குறிப்பு புள்ளி தொடர்புடையது உங்கள் கர்சர் எங்கே இருந்து. நீங்கள் SEEK_CUR கடந்து இருந்தால், அந்த தற்போதைய பிரதிபலிக்கிறது கோப்பு நிலை. அல்லது நீங்கள் வேறு சில அளவுருக்கள் பயன்படுத்த முடியும். எனவே, நாம் தவிர்க்க fseek பயன்படுத்த வேண்டும் உள்ள கோப்பு பேட்டிங்கின் மீது. நீங்கள் சிக்கி என்றால், மீண்டும், அங்கு copy.c. என்று ஒரு உதாரணம் எனவே இப்போது நாம் கோப்பை திறந்து, துப்பு, மற்றும் தீர்ப்பு. நாம் தலைப்பு தகவல் மேம்படுத்தப்பட்டது நம் தீர்ப்பு, ஏனெனில் ஒவ்வொரு படங்கள் ஒரு தலைப்பு வேண்டும். நாம் துப்பு தான் ஒரு படிக்க scanline, பிக்சல் மூலம் பிக்சல், மாறி ஒவ்வொரு வண்ண தேவையான, மற்றும் அந்த எழுதி தீர்ப்பு, பிக்சல் மூலம் பிக்சல். நீங்கள் தீர்ப்பு திறக்க, நீங்கள் பார்க்க முடியும் குற்றவாளி, அல்லது என்ன ரகசியம் செய்தி உள்ளது. என் பெயர் Zamyla உள்ளது, மற்றும் இந்த ஹூட்யூனிட் இருந்தது.