[MUSIC ప్లే] ZAMYLA చాన్: లెట్స్ దెబ్బ పునఃపరిమాణం తో సంగతులకు. పునఃపరిమాణం, వినియోగదారు ద్వారా, లో పాస్ కమాండ్ లైన్, ఒక బిట్మ్యాప్ చిత్రం ఆ వారు మీరు అనేక స్కేల్ కావలసిన వారు కూడా, లో పాస్ కమాండ్ లైన్ లో. మేము ఎలా చేయాలి? బాగా, మొదటి మొదటి విషయాలు, వీలు యొక్క చర్యలు ఈ విచ్ఛిన్నం. మీరు infile తెరవడానికి చూడాలని వారు మీరు ఇవ్వాలని, అలాగే ఆ సృష్టించడానికి మరియు outfile తెరిచిన మీరు ఉంచారు చూడాలని సైన్ పరిమాణం చిత్రం అప్పుడు, మీరు పునఃపరిమాణం మరియు ఉన్నందున ఇది ఒక బిట్మ్యాప్ ఎందుకంటే, అది ఒక శీర్షిక, కాబట్టి మీరు శీర్షిక నవీకరించడానికి వెళుతున్న outfile కోసం సమాచారాన్ని, సైన్ రాయడానికి అప్పుడు, మీరు చదవండి చూడాలని infile యొక్క scanline, పిక్సెల్ ద్వారా పిక్సెల్, అడ్డంగా పునఃపరిమాణం మరియు ఆ పిక్సెళ్ళు రాయడం outfile, తెలిపినట్లు యూజర్ యొక్క స్థాయి. మీకు గుర్తు చేస్తున్నారు అవసరం వంటి పాడింగ్ జోడించండి. తరువాత ఆ మరింత. ఆపై నిలువుగా పరిమాణాన్ని. OK. కాబట్టి ఈ కొద్దిగా ఎక్కువ అన్నారు ఇది డన్ ఎవరు కంటే సంక్లిష్టంగా, కానీ ఏమి పోలి ఉండే copy.c రెడీ ఉంది, మళ్ళీ, చాలా ఉపయోగకరంగా నిరూపించడానికి. , Copy.c ఒక ఫైల్ తెరుచుకుంటుంది గుర్తుంచుకోండి కోసం శీర్షిక సమాచారం అప్డేట్ outfile, అప్పుడు scanline లో చదివి, పిక్సెల్ ద్వారా పిక్సెల్, ప్రతి పిక్సెల్ రాయడం అవుట్పుట్ ఫైల్ యొక్క scanline లోకి. మరలా, మీ మొదటి అడుగు బహుశా వాటిని cp, copy.c, resize.c ఉంటుంది మీ Pset5 డైరెక్టరీలో. మీరు కాపీ ముందు, గుర్తుంచుకో, మీరు అర్థం నిర్ధారించుకోండి చాలా బాగా copy.c. OK. కాబట్టి యొక్క ఒక తెరుస్తాను. మీరు అలా ఎలా. నేను మీరు ఆ వదిలి వెళుతున్న. తదుపరి, శీర్షిక సమాచారం అప్డేట్ outfile కోసం. మేము ఒక కొత్త బిట్మ్యాప్ ఎందుకంటే, మేము కొత్త శీర్షిక సమాచారం. ఇక్కడికి మార్చడం అలా? బాగా, ఫైలు పరిమాణం మార్చండి అన్నారు మేము మరింత చూడాలని ఎందుకంటే ముందు కంటే పిక్సెళ్ళు. చిత్రం పరిమాణం కూడా, అందువలన, ఉంది ఉంది వంటి, మార్చుకోబోతున్నారు వెడల్పు మరియు ఎత్తు. కాబట్టి ఇది వేరియబుల్స్ ఆ ఖచ్చితంగా, ఉన్నాయి? సరే, మీరు శీర్షిక పరిశీలిస్తాము సమాచారాన్ని మీకు ఉంది చూడండి మొత్తం సూచిస్తుంది biSizeImage, బైట్లు లో చిత్రం పరిమాణం, పిక్సెళ్ళు మరియు padding సహా. biWidth చిత్రం యొక్క వెడల్పు ఉంది పిక్సెళ్ళు లో, పాడింగ్ మైనస్. biHeight యొక్క ఎత్తు పిక్సెళ్ళు లో చిత్రం. కాబట్టి ఆ ఉంటాయి structs BITMAPFILEHEADER మరియు BITMAPINFOHEADER. మీరు ద్వారా ఇది ఇది వర్తమాన bmp.h వెళ్లి చూడటం BITMAPINFOHEADER struct పుణ్యమా వేరియబుల్స్ ఉన్నాయి జాబితా ఇది. కాబట్టి outfiles శీర్షిక అప్డేట్ సమాచారం, మీకు కావలసిన చూడాలని ఆ విలువలను మార్చడం ఎత్తు మరియు వెడల్పు. కానీ అవకాశాలు మీరు కొన్ని అవసరం ఉండవచ్చు infile యొక్క శీర్షిక సమాచారాన్ని తరువాత, కాబట్టి ఉత్తమ రెండు ట్రాక్. కానీ మీ వేరియబుల్ చాలా స్పష్టంగా ఉంటుంది పేర్లు కాబట్టి మీరు అనుకోకుండా తప్పు విలువలు వ్రాయండి outfile కోసం శీర్షిక. కాబట్టి ఇప్పుడు యొక్క లోకి చదవడం ను తెలియజేయండి scanline పిక్సెల్ ద్వారా పిక్సెల్. మళ్లీ, మేము మా నమ్మదగిన ఆశ్రయించారు చూడాలని I / O లైబ్రరీ ఫైల్, మరియు చూడండి fread ఫంక్షన్. fread ఒక struct ఒక పాయింటర్ లో పడుతుంది ఆ బైట్లు కలిగిన మీరు చదువుతున్న, ప్రతి యొక్క పరిమాణం మీరు చదువుతున్న ఆ మూలకం - మళ్ళీ, sizeof ఉపయోగకరంగా అన్నారు ఇక్కడ పని, సంఖ్య మీరు ఆ పరిమాణం, పరిమాణం అంశాలు, తర్వాత చివరిగా చదవడం, మరియు, inpointer, ఫైలు మీరు నుండి చదువుతున్న. కాబట్టి మీరు సంఖ్య అంశాలు వేస్తున్నాము inpointer నుండి పరిమాణం, మరియు డేటా వాటిని ఇవ్వడం. ఇప్పుడు అది అడ్డంగా పరిమాణాన్ని సమయం. n లో ప్రతి పిక్సెల్ కోసం అప్పుడు, 2 సమానం infile, మేము అది రాయాలో రెండుసార్లు outfile లో. ఎలా మేము ఫైళ్ళు వ్రాస్తారా? Well, మేము fwrite చర్య, కాబట్టి మేము struct కు పాయింటర్ తీసుకున్నారు మీరు ఆ బైట్లు కలిగి నుండి రాయడం, మరియు అప్పుడు మేము లో పాస్ పరిమాణం, సంఖ్య మరియు ఉత్పత్తి పేరు మీరు ఆ రాయడం చూడాలని. ఆపై ఒక విధానాన్ని పునరుక్తి, ఉంటుంది లూప్ సామర్థ్యం ఒక సాధారణ పునరుత్థాన. కానీ మేము గుర్తు అవసరం సైన్ పాడింగ్ జోడించడానికి పాడింగ్ భావన అని, బాగా, ఉంది ప్రతి పిక్సెల్ మూడు కాటు, కానీ ప్రతి scanline తప్పక యొక్క పరిమాణం 4 బైట్లు ఒక బహుళ ఉండాలి. కాబట్టి పిక్సెళ్ళు సంఖ్య లేకపోతే ఒక 4 యొక్క బహుళ, మేము కొన్ని జోడించాలి కేవలం సున్నాల ఇది పాడింగ్,. ఇప్పుడు, ఇది డన్ ఎవరు కాకుండా కాకుండా, మరియు కాపీ, అప్పుడు infile చిత్రం మరియు outfile ఫైలు వేరే చేశారు వివిధ పాడింగ్ వారు ఉన్నారు ఎందుకంటే వివిధ వెడల్పులు. OK. అందువలన ఫార్ములా ఇక్కడ ఉపయోగపడుట. నేను తెలుసుకోవడానికి మీరు దానిని వదిలి, కానీ పాడింగ్ రాయడానికి, మీరు చెప్పండి, బాగా, ఇది కేవలం fputc ఫంక్షన్, పాత్ర లో ప్రయాణిస్తున్న మీరు రాయాలనుకుంటున్నాను, మరియు ఆ ఫైలు పాయింటర్ మీరు వ్రాయడానికి కావలసిన. కాబట్టి ఇప్పుడు మేము, అడ్డంగా పరిమాణం చేసిన ఆపై, పాడింగ్ ఉపయోగిస్తారు మీరు మీ ఫైలు కదిలిస్తూ ఉండాలి గుర్తుంచుకోవాలి స్థానం సూచిక, మీరు ఎందుకంటే పాడింగ్ లోకి fread కాదు. కాబట్టి మీరు ఖచ్చితంగా అని నిర్ధారించుకోవాలి మీ ఫైలు infile లో స్థానం సూచిక సరైన సమయంలో ఉంది. మేము కూడా మీరు ఎందుకంటే నిలువుగా పరిమాణాన్ని. మేము కేవలం, అడ్డంగా అది వదులు కాదు ప్రతి వరుస అవసరాలను ఎందుకంటే n సార్లు కాపీ. ఇప్పుడు, వివిధ అనేక ఉన్నాయి దీన్ని మార్గాలను. కాబట్టి, మేము లో, రాయాలని విధానాన్ని ఉపయోగించవచ్చు మేము పిక్సెళ్ళు అన్ని గుర్తు ఇచ్చిన వ్యూహంలో వరుస, మరియు అప్పుడు మేము వంటి ఆ శ్రేణి వ్రాయండి అనేక సార్లు అవసరమైన. లేదా ఎక్కడ recopy పద్ధతి ఉంది, infile లో ఒక వరుసలో చదివిన తరువాత ఆపై outfile లోకి అని వ్రాయడం, padding జోడించడం, మేము fseek అసలు వరుసగా ప్రారంభంలో తిరిగి, మరియు సమాంతర పునరావృతం అక్కడ నుండి పునఃపరిమాణం. సంబంధం లేకుండా పద్ధతి యొక్క, అయితే, మీరు ప్రతి పిక్సెల్ పునరావృతం కావలసిన n సార్లు, మరియు ప్రతి వరుస ఉండాలి అలాగే n సార్లు పునరావృతం. ఆ, మీరు బిట్మ్యాప్ ఉంటుంది జీవితం కంటే పెద్ద. నా పేరు Zamyla ఉంది, మరియు ఈ CS50 ఉంది.