1 00:00:00,000 --> 00:00:12,240 >> [MUSIC پخش] 2 00:00:12,240 --> 00:00:15,870 >> ROB BOWDEN: سلام، من راب هستم، اجازه دهید سعی کنید این در اندازه. 3 00:00:15,870 --> 00:00:21,100 بنابراین، ما در حال رفتن دوباره برای شروع با اساسا یک کپی از copy.c، و 4 00:00:21,100 --> 00:00:22,860 ایجاد چند تغییر. 5 00:00:22,860 --> 00:00:26,280 توجه داشته باشید بلافاصله ما شاهد یک تغییر، که در آن به جای چک کردن برای دیدن اگر 6 00:00:26,280 --> 00:00:30,440 تعداد آنها برابر 3 نیست، ما می خواهیم به بررسی اگر تعداد آنها برابر نیست 4، از 7 00:00:30,440 --> 00:00:34,350 در حال حاضر ما در حال نه تنها در INFILE گرفتن و outfile، اما ما نیز گرفتن در 8 00:00:34,350 --> 00:00:38,980 n که مقدار که ما هستیم پوسته پوسته شدن تصویر اصلی توسط. 9 00:00:38,980 --> 00:00:44,340 زمانی که ما از آن مطمئن هستیم، ما فقط می تواند تبدیل n را به یک عدد صحیح با استفاده از atoi. 10 00:00:44,340 --> 00:00:48,760 >> بنابراین، در حال حاضر ما قصد داریم برای ایجاد برخی از نام مستعار، فقط و argv 2 INFILE تماس بگیرید، و 11 00:00:48,760 --> 00:00:54,240 و argv 3 outfile، زیرا و argv 2 و argv را 3 می باشد نام بسیار مفید است. 12 00:00:54,240 --> 00:00:58,510 حالا ما می خواهیم به بررسی تا مطمئن شوید N است در داخل مرزهای ما انتظار داریم، به طوری که 13 00:00:58,510 --> 00:01:02,910 تنظیمات مشخص می کند که اگر آن را به کمتر یا برابر با صفر است، و یا بیشتر از 100، 14 00:01:02,910 --> 00:01:08,580 پس از آن که یک عامل تغییر اندازه نامعتبر است، و ما باید به کاربر آن هشدار می دهند. 15 00:01:08,580 --> 00:01:13,090 >> زمانی که ما فراتر از همه که هستید، ما می توانیم در نهایت باز INFILE ما، و ما باید 16 00:01:13,090 --> 00:01:16,270 به خطا را بررسی کنید تا مطمئن شوید که باز هم برای برخی از دلایل شکست نیست. 17 00:01:16,270 --> 00:01:19,860 ما همچنین نیاز به باز کردن outfile ما، و دوباره خطا را بررسی کنید تا مطمئن شوید که 18 00:01:19,860 --> 00:01:21,250 آیا برای برخی از دلایل شکست نیست. 19 00:01:21,250 --> 00:01:26,270 اما مطمئن باشید اگر باز از outfile شکست خورده است که ما نیاز به بستن 20 00:01:26,270 --> 00:01:29,040 INFILE، که در حال حاضر باز شده است. 21 00:01:29,040 --> 00:01:33,690 >> بنابراین، فرض کنید که شکست نیست، پس we're - همانطور که در copy.c-- 22 00:01:33,690 --> 00:01:36,140 رفتن به خواندن در هدر از INFILE. 23 00:01:36,140 --> 00:01:40,130 ما قصد داریم تا مطمئن شوید آن را معتبر بیت مپ، اما در حال حاضر ما قصد داریم برای انجام برخی از 24 00:01:40,130 --> 00:01:41,620 چیز کمی متفاوت است. 25 00:01:41,620 --> 00:01:44,870 پس اول، ما قصد داریم به می خواهم به به یاد داشته باشید عرض اصلی و ارتفاع 26 00:01:44,870 --> 00:01:48,290 از INFILE، چرا که ما در حال رفتن به توان تغییر آن را برای outfile. 27 00:01:48,290 --> 00:01:53,890 بنابراین در حال حاضر به یاد داشته باشید که به دلایل عجیب و غریب bi.biheight، منفی است، و 28 00:01:53,890 --> 00:01:58,670 به طوری که ارتفاع واقعی، در مثبت، ما می خواهید را به ارزش مطلق. 29 00:01:58,670 --> 00:02:02,580 >> در حال حاضر، بالشتک است که به همان محاسبه آن را به عنوان در copy.c بود، 30 00:02:02,580 --> 00:02:06,060 با استفاده از عرض های قدیمی، و در حال حاضر ما در واقع رفتن به تغییر 31 00:02:06,060 --> 00:02:07,320 آنچه در هدر است. 32 00:02:07,320 --> 00:02:11,200 بنابراین ما قصد داریم با عرض ما به چند برابر نفر، از آنجایی که ما در حال پوسته پوسته شدن عرض 33 00:02:11,200 --> 00:02:15,100 N، ضرب ارتفاع توسط n، از آنجایی که ما هستیم پوسته پوسته شدن توسط n، و در حال حاضر ما 34 00:02:15,100 --> 00:02:19,250 محاسبه برای یک لایه جدید بر اساس عرض های جدید. 35 00:02:19,250 --> 00:02:21,840 >> بنابراین در حال حاضر ما نیاز به تغییر برخی از زمینه های دیگر در هدر است. 36 00:02:21,840 --> 00:02:26,890 Bi.biSizeImage قرار است به اندازه تمام بایت در پیکسل 37 00:02:26,890 --> 00:02:28,520 و padding از تصویر. 38 00:02:28,520 --> 00:02:34,190 و به این ترتیب به اندازه یک سطر از ما حجم تصویر از RGB سه گانه، به اندازه است 39 00:02:34,190 --> 00:02:39,430 از یک پیکسل، برابر تعداد پیکسل در یک ردیف، به علاوه بالشتک در 40 00:02:39,430 --> 00:02:40,910 در پایان ردیف. 41 00:02:40,910 --> 00:02:45,200 و پس از آن ما قصد داریم به ضرب که توسط قدر مطلق ارتفاع ما به 42 00:02:45,200 --> 00:02:48,350 تعداد کل بایت در داده های تصویر. 43 00:02:48,350 --> 00:02:53,050 bf.bfSize فقط تعداد کل است بایت در اطلاعات تصویر ما، پس 44 00:02:53,050 --> 00:02:56,530 bi.biSizeImage، به علاوه اندازه هدر است. 45 00:02:56,530 --> 00:02:59,850 بنابراین، اضافه کردن به اندازه از فایل بیت مپ هدر و اندازه اطلاعات بیت مپ 46 00:02:59,850 --> 00:03:00,800 هدر، OK. 47 00:03:00,800 --> 00:03:03,170 به طوری که همه ما نیاز به تغییر در هدر است. 48 00:03:03,170 --> 00:03:07,020 در حال حاضر ما را هدر فایل بیت مپ ارسال به outfile ما، و اطلاعات بیت مپ ما 49 00:03:07,020 --> 00:03:09,880 هدر به outfile ما، و در حال حاضر ما آماده رفتن است 50 00:03:09,880 --> 00:03:11,990 بیش از پیکسل های واقعی. 51 00:03:11,990 --> 00:03:15,720 >> بنابراین ما می خواهیم به تکرار بیش از اسکن از خطوط INFILE است. 52 00:03:15,720 --> 00:03:17,730 بنابراین ما می خواهیم به تکرار بیش از oldheight. 53 00:03:17,730 --> 00:03:20,830 این است که چرا ما نیاز به به خاطر داشته باشید ارتفاع اصلی، قبل از ما آن را تغییر دهید 54 00:03:20,830 --> 00:03:23,040 و آن را توسط N کوچک. 55 00:03:23,040 --> 00:03:27,810 در حال حاضر ما در حال رفتن به خواندن یک ردیف از INFILE به 56 00:03:27,810 --> 00:03:30,630 بافر اندازه oldwidth. 57 00:03:30,630 --> 00:03:36,190 اندازه بنابراین در اینجا، ما در حال freading از RGB سه گانه، یک پیکسل و عرض قدیمی 58 00:03:36,190 --> 00:03:39,760 آنها را از INFILE به بافر است. 59 00:03:39,760 --> 00:03:43,480 و این رفتن به یک کل ردیف در این آرایه. 60 00:03:43,480 --> 00:03:50,390 بنابراین در حال حاضر، ما می خواهیم به تکرار بار نفر به چاپ این ردیف به outfile نفر زمان ما. 61 00:03:50,390 --> 00:03:52,510 و بنابراین، این چیزی است که این حلقه در حال انجام است. 62 00:03:52,510 --> 00:03:57,910 این حلقه داخلی است که به شمارش خود را ردیف، طول آرایه، چاپ 63 00:03:57,910 --> 00:04:00,710 هر پیکسل در آرایه n بار. 64 00:04:00,710 --> 00:04:04,510 بنابراین عنصر صفر است که چاپ شده n بار، این عنصر را برای اولین بار است که 65 00:04:04,510 --> 00:04:05,660 چاپ بار N. 66 00:04:05,660 --> 00:04:10,820 و این نوع از چگونه ما قصد داریم به به صورت افقی در outfile مقیاس، و 67 00:04:10,820 --> 00:04:13,390 این حلقه، از ما حلقه N بار، این است که چگونه ما در حال رفتن به 68 00:04:13,390 --> 00:04:15,580 مقیاس عمودی. 69 00:04:15,580 --> 00:04:19,850 >> در اینجا، ما می بینیم که ما نیاز به اضافه کردن پد در پایان هر سطر. 70 00:04:19,850 --> 00:04:25,050 به همین دلیل این است که در داخل حلقه که چاپ از ردیف N تنها 71 00:04:25,050 --> 00:04:28,400 این یک ردیف از INFILE. 72 00:04:28,400 --> 00:04:32,150 پس از آن در اینجا، من قصد دارم به جست و خیز بیش از پد در INFILE، پس از یک بار 73 00:04:32,150 --> 00:04:34,560 ما با یکی از ردیف های انجام شده INFILE، ما اهمیت ندارد 74 00:04:34,560 --> 00:04:35,290 چه بالشتک بود. 75 00:04:35,290 --> 00:04:37,110 ما فقط می خواهیم برای رسیدن به ردیف دوم. 76 00:04:37,110 --> 00:04:40,870 و پس از آن خواهیم حلقه به عقب و انجام تمام این دوباره برای ردیف دوم. 77 00:04:40,870 --> 00:04:44,406 >> در نهایت، یک بار ما با همه که انجام می شود، ما می توانیم INFILE نزدیک، نزدیک 78 00:04:44,406 --> 00:04:47,430 outfile، و بازگشت 0 از آنجا که ما در حال انجام می شود. 79 00:04:47,430 --> 00:04:50,330 >> نام من راب است، و این تغییر اندازه بود. 80 00:04:50,330 --> 00:04:54,934 >> [MUSIC پخش]