1 00:00:00,000 --> 00:00:10,210 >> [MUSIC ప్లే] 2 00:00:10,210 --> 00:00:13,320 >> ZAMYLA చాన్: లెట్స్ దెబ్బ పునఃపరిమాణం తో సంగతులకు. 3 00:00:13,320 --> 00:00:17,710 పునఃపరిమాణం, వినియోగదారు ద్వారా, లో పాస్ కమాండ్ లైన్, ఒక బిట్మ్యాప్ చిత్రం ఆ 4 00:00:17,710 --> 00:00:21,860 వారు మీరు అనేక స్కేల్ కావలసిన వారు కూడా, లో పాస్ 5 00:00:21,860 --> 00:00:23,770 కమాండ్ లైన్ లో. 6 00:00:23,770 --> 00:00:24,690 మేము ఎలా చేయాలి? 7 00:00:24,690 --> 00:00:28,270 >> బాగా, మొదటి మొదటి విషయాలు, వీలు యొక్క చర్యలు ఈ విచ్ఛిన్నం. 8 00:00:28,270 --> 00:00:31,510 మీరు infile తెరవడానికి చూడాలని వారు మీరు ఇవ్వాలని, అలాగే ఆ 9 00:00:31,510 --> 00:00:35,560 సృష్టించడానికి మరియు outfile తెరిచిన మీరు ఉంచారు చూడాలని 10 00:00:35,560 --> 00:00:38,020 సైన్ పరిమాణం చిత్రం 11 00:00:38,020 --> 00:00:42,050 అప్పుడు, మీరు పునఃపరిమాణం మరియు ఉన్నందున ఇది ఒక బిట్మ్యాప్ ఎందుకంటే, అది ఒక శీర్షిక, కాబట్టి 12 00:00:42,050 --> 00:00:46,080 మీరు శీర్షిక నవీకరించడానికి వెళుతున్న outfile కోసం సమాచారాన్ని, 13 00:00:46,080 --> 00:00:47,950 సైన్ రాయడానికి 14 00:00:47,950 --> 00:00:51,850 అప్పుడు, మీరు చదవండి చూడాలని infile యొక్క scanline, 15 00:00:51,850 --> 00:00:56,890 పిక్సెల్ ద్వారా పిక్సెల్, అడ్డంగా పునఃపరిమాణం మరియు ఆ పిక్సెళ్ళు రాయడం 16 00:00:56,890 --> 00:01:00,910 outfile, తెలిపినట్లు యూజర్ యొక్క స్థాయి. 17 00:01:00,910 --> 00:01:03,940 >> మీకు గుర్తు చేస్తున్నారు అవసరం వంటి పాడింగ్ జోడించండి. 18 00:01:03,940 --> 00:01:05,400 తరువాత ఆ మరింత. 19 00:01:05,400 --> 00:01:07,790 ఆపై నిలువుగా పరిమాణాన్ని. 20 00:01:07,790 --> 00:01:08,890 OK. 21 00:01:08,890 --> 00:01:13,280 కాబట్టి ఈ కొద్దిగా ఎక్కువ అన్నారు ఇది డన్ ఎవరు కంటే సంక్లిష్టంగా, కానీ 22 00:01:13,280 --> 00:01:18,310 ఏమి పోలి ఉండే copy.c రెడీ ఉంది, మళ్ళీ, చాలా ఉపయోగకరంగా నిరూపించడానికి. 23 00:01:18,310 --> 00:01:23,160 , Copy.c ఒక ఫైల్ తెరుచుకుంటుంది గుర్తుంచుకోండి కోసం శీర్షిక సమాచారం అప్డేట్ 24 00:01:23,160 --> 00:01:28,250 outfile, అప్పుడు scanline లో చదివి, పిక్సెల్ ద్వారా పిక్సెల్, ప్రతి పిక్సెల్ రాయడం 25 00:01:28,250 --> 00:01:30,510 అవుట్పుట్ ఫైల్ యొక్క scanline లోకి. 26 00:01:30,510 --> 00:01:37,040 >> మరలా, మీ మొదటి అడుగు బహుశా వాటిని cp, copy.c, resize.c ఉంటుంది 27 00:01:37,040 --> 00:01:40,560 మీ Pset5 డైరెక్టరీలో. 28 00:01:40,560 --> 00:01:43,920 మీరు కాపీ ముందు, గుర్తుంచుకో, మీరు అర్థం నిర్ధారించుకోండి 29 00:01:43,920 --> 00:01:46,600 చాలా బాగా copy.c. 30 00:01:46,600 --> 00:01:47,620 OK. 31 00:01:47,620 --> 00:01:49,880 >> కాబట్టి యొక్క ఒక తెరుస్తాను. 32 00:01:49,880 --> 00:01:50,870 మీరు అలా ఎలా. 33 00:01:50,870 --> 00:01:52,600 నేను మీరు ఆ వదిలి వెళుతున్న. 34 00:01:52,600 --> 00:01:56,050 తదుపరి, శీర్షిక సమాచారం అప్డేట్ outfile కోసం. 35 00:01:56,050 --> 00:01:59,240 మేము ఒక కొత్త బిట్మ్యాప్ ఎందుకంటే, మేము కొత్త శీర్షిక సమాచారం. 36 00:01:59,240 --> 00:02:00,970 ఇక్కడికి మార్చడం అలా? 37 00:02:00,970 --> 00:02:06,000 బాగా, ఫైలు పరిమాణం మార్చండి అన్నారు మేము మరింత చూడాలని ఎందుకంటే 38 00:02:06,000 --> 00:02:07,900 ముందు కంటే పిక్సెళ్ళు. 39 00:02:07,900 --> 00:02:11,060 చిత్రం పరిమాణం కూడా, అందువలన, ఉంది ఉంది వంటి, మార్చుకోబోతున్నారు 40 00:02:11,060 --> 00:02:13,050 వెడల్పు మరియు ఎత్తు. 41 00:02:13,050 --> 00:02:17,180 >> కాబట్టి ఇది వేరియబుల్స్ ఆ ఖచ్చితంగా, ఉన్నాయి? 42 00:02:17,180 --> 00:02:20,960 సరే, మీరు శీర్షిక పరిశీలిస్తాము సమాచారాన్ని మీకు ఉంది చూడండి 43 00:02:20,960 --> 00:02:25,640 మొత్తం సూచిస్తుంది biSizeImage, బైట్లు లో చిత్రం పరిమాణం, 44 00:02:25,640 --> 00:02:28,340 పిక్సెళ్ళు మరియు padding సహా. 45 00:02:28,340 --> 00:02:32,520 biWidth చిత్రం యొక్క వెడల్పు ఉంది పిక్సెళ్ళు లో, పాడింగ్ మైనస్. 46 00:02:32,520 --> 00:02:35,580 biHeight యొక్క ఎత్తు పిక్సెళ్ళు లో చిత్రం. 47 00:02:35,580 --> 00:02:39,200 కాబట్టి ఆ ఉంటాయి structs BITMAPFILEHEADER మరియు 48 00:02:39,200 --> 00:02:40,390 BITMAPINFOHEADER. 49 00:02:40,390 --> 00:02:45,300 మీరు ద్వారా ఇది ఇది వర్తమాన bmp.h వెళ్లి చూడటం 50 00:02:45,300 --> 00:02:49,670 BITMAPINFOHEADER struct పుణ్యమా వేరియబుల్స్ ఉన్నాయి జాబితా ఇది. 51 00:02:49,670 --> 00:02:54,700 >> కాబట్టి outfiles శీర్షిక అప్డేట్ సమాచారం, మీకు కావలసిన చూడాలని 52 00:02:54,700 --> 00:02:57,025 ఆ విలువలను మార్చడం ఎత్తు మరియు వెడల్పు. 53 00:02:57,025 --> 00:03:00,570 కానీ అవకాశాలు మీరు కొన్ని అవసరం ఉండవచ్చు infile యొక్క శీర్షిక సమాచారాన్ని 54 00:03:00,570 --> 00:03:03,670 తరువాత, కాబట్టి ఉత్తమ రెండు ట్రాక్. 55 00:03:03,670 --> 00:03:07,770 కానీ మీ వేరియబుల్ చాలా స్పష్టంగా ఉంటుంది పేర్లు కాబట్టి మీరు అనుకోకుండా 56 00:03:07,770 --> 00:03:12,490 తప్పు విలువలు వ్రాయండి outfile కోసం శీర్షిక. 57 00:03:12,490 --> 00:03:16,160 >> కాబట్టి ఇప్పుడు యొక్క లోకి చదవడం ను తెలియజేయండి scanline పిక్సెల్ ద్వారా పిక్సెల్. 58 00:03:16,160 --> 00:03:20,210 మళ్లీ, మేము మా నమ్మదగిన ఆశ్రయించారు చూడాలని I / O లైబ్రరీ ఫైల్, మరియు చూడండి 59 00:03:20,210 --> 00:03:22,100 fread ఫంక్షన్. 60 00:03:22,100 --> 00:03:26,150 fread ఒక struct ఒక పాయింటర్ లో పడుతుంది ఆ బైట్లు కలిగిన 61 00:03:26,150 --> 00:03:30,130 మీరు చదువుతున్న, ప్రతి యొక్క పరిమాణం మీరు చదువుతున్న ఆ మూలకం - 62 00:03:30,130 --> 00:03:34,410 మళ్ళీ, sizeof ఉపయోగకరంగా అన్నారు ఇక్కడ పని, సంఖ్య 63 00:03:34,410 --> 00:03:38,820 మీరు ఆ పరిమాణం, పరిమాణం అంశాలు, తర్వాత చివరిగా చదవడం, మరియు, 64 00:03:38,820 --> 00:03:41,310 inpointer, ఫైలు మీరు నుండి చదువుతున్న. 65 00:03:41,310 --> 00:03:46,770 కాబట్టి మీరు సంఖ్య అంశాలు వేస్తున్నాము inpointer నుండి పరిమాణం, మరియు 66 00:03:46,770 --> 00:03:49,040 డేటా వాటిని ఇవ్వడం. 67 00:03:49,040 --> 00:03:51,695 >> ఇప్పుడు అది అడ్డంగా పరిమాణాన్ని సమయం. 68 00:03:51,695 --> 00:03:56,880 n లో ప్రతి పిక్సెల్ కోసం అప్పుడు, 2 సమానం infile, మేము అది రాయాలో 69 00:03:56,880 --> 00:04:00,870 రెండుసార్లు outfile లో. 70 00:04:00,870 --> 00:04:02,210 ఎలా మేము ఫైళ్ళు వ్రాస్తారా? 71 00:04:02,210 --> 00:04:06,400 Well, మేము fwrite చర్య, కాబట్టి మేము struct కు పాయింటర్ తీసుకున్నారు 72 00:04:06,400 --> 00:04:10,170 మీరు ఆ బైట్లు కలిగి నుండి రాయడం, మరియు అప్పుడు మేము లో పాస్ 73 00:04:10,170 --> 00:04:14,430 పరిమాణం, సంఖ్య మరియు ఉత్పత్తి పేరు మీరు ఆ రాయడం చూడాలని. 74 00:04:14,430 --> 00:04:19,200 ఆపై ఒక విధానాన్ని పునరుక్తి, ఉంటుంది లూప్ సామర్థ్యం ఒక సాధారణ పునరుత్థాన. 75 00:04:19,200 --> 00:04:21,740 >> కానీ మేము గుర్తు అవసరం సైన్ పాడింగ్ జోడించడానికి 76 00:04:21,740 --> 00:04:26,040 పాడింగ్ భావన అని, బాగా, ఉంది ప్రతి పిక్సెల్ మూడు కాటు, కానీ 77 00:04:26,040 --> 00:04:28,940 ప్రతి scanline తప్పక యొక్క పరిమాణం 4 బైట్లు ఒక బహుళ ఉండాలి. 78 00:04:28,940 --> 00:04:33,660 కాబట్టి పిక్సెళ్ళు సంఖ్య లేకపోతే ఒక 4 యొక్క బహుళ, మేము కొన్ని జోడించాలి 79 00:04:33,660 --> 00:04:36,630 కేవలం సున్నాల ఇది పాడింగ్,. 80 00:04:36,630 --> 00:04:42,130 ఇప్పుడు, ఇది డన్ ఎవరు కాకుండా కాకుండా, మరియు కాపీ, అప్పుడు infile చిత్రం మరియు 81 00:04:42,130 --> 00:04:44,370 outfile ఫైలు వేరే చేశారు వివిధ పాడింగ్ వారు ఉన్నారు ఎందుకంటే 82 00:04:44,370 --> 00:04:46,360 వివిధ వెడల్పులు. 83 00:04:46,360 --> 00:04:46,690 >> OK. 84 00:04:46,690 --> 00:04:51,050 అందువలన ఫార్ములా ఇక్కడ ఉపయోగపడుట. 85 00:04:51,050 --> 00:04:55,120 నేను తెలుసుకోవడానికి మీరు దానిని వదిలి, కానీ పాడింగ్ రాయడానికి, మీరు చెప్పండి, 86 00:04:55,120 --> 00:04:59,360 బాగా, ఇది కేవలం fputc ఫంక్షన్, పాత్ర లో ప్రయాణిస్తున్న 87 00:04:59,360 --> 00:05:02,200 మీరు రాయాలనుకుంటున్నాను, మరియు ఆ ఫైలు పాయింటర్ మీరు 88 00:05:02,200 --> 00:05:04,280 వ్రాయడానికి కావలసిన. 89 00:05:04,280 --> 00:05:08,670 కాబట్టి ఇప్పుడు మేము, అడ్డంగా పరిమాణం చేసిన ఆపై, పాడింగ్ ఉపయోగిస్తారు 90 00:05:08,670 --> 00:05:12,030 మీరు మీ ఫైలు కదిలిస్తూ ఉండాలి గుర్తుంచుకోవాలి స్థానం సూచిక, మీరు ఎందుకంటే 91 00:05:12,030 --> 00:05:14,480 పాడింగ్ లోకి fread కాదు. 92 00:05:14,480 --> 00:05:18,230 కాబట్టి మీరు ఖచ్చితంగా అని నిర్ధారించుకోవాలి మీ ఫైలు infile లో స్థానం సూచిక 93 00:05:18,230 --> 00:05:19,980 సరైన సమయంలో ఉంది. 94 00:05:19,980 --> 00:05:23,970 మేము కూడా మీరు ఎందుకంటే నిలువుగా పరిమాణాన్ని. 95 00:05:23,970 --> 00:05:27,090 మేము కేవలం, అడ్డంగా అది వదులు కాదు ప్రతి వరుస అవసరాలను ఎందుకంటే 96 00:05:27,090 --> 00:05:30,370 n సార్లు కాపీ. 97 00:05:30,370 --> 00:05:33,050 >> ఇప్పుడు, వివిధ అనేక ఉన్నాయి దీన్ని మార్గాలను. 98 00:05:33,050 --> 00:05:39,010 కాబట్టి, మేము లో, రాయాలని విధానాన్ని ఉపయోగించవచ్చు మేము పిక్సెళ్ళు అన్ని గుర్తు 99 00:05:39,010 --> 00:05:42,840 ఇచ్చిన వ్యూహంలో వరుస, మరియు అప్పుడు మేము వంటి ఆ శ్రేణి వ్రాయండి 100 00:05:42,840 --> 00:05:44,730 అనేక సార్లు అవసరమైన. 101 00:05:44,730 --> 00:05:49,530 లేదా ఎక్కడ recopy పద్ధతి ఉంది, infile లో ఒక వరుసలో చదివిన తరువాత 102 00:05:49,530 --> 00:05:53,530 ఆపై outfile లోకి అని వ్రాయడం, padding జోడించడం, మేము fseek 103 00:05:53,530 --> 00:05:57,250 అసలు వరుసగా ప్రారంభంలో తిరిగి, మరియు సమాంతర పునరావృతం 104 00:05:57,250 --> 00:05:58,710 అక్కడ నుండి పునఃపరిమాణం. 105 00:05:58,710 --> 00:06:02,280 సంబంధం లేకుండా పద్ధతి యొక్క, అయితే, మీరు ప్రతి పిక్సెల్ పునరావృతం కావలసిన 106 00:06:02,280 --> 00:06:06,370 n సార్లు, మరియు ప్రతి వరుస ఉండాలి అలాగే n సార్లు పునరావృతం. 107 00:06:06,370 --> 00:06:09,160 >> ఆ, మీరు బిట్మ్యాప్ ఉంటుంది జీవితం కంటే పెద్ద. 108 00:06:09,160 --> 00:06:11,760 నా పేరు Zamyla ఉంది, మరియు ఈ CS50 ఉంది. 109 00:06:11,760 --> 00:06:19,542