1 00:00:00,000 --> 00:00:10,210 >> [موسیقی بجانا] 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 ٹھیک ہے. 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 ٹھیک ہے. 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 پکسلز اور بھرتی سمیت. 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 (ن) میں ہر پکسل کے لئے اس کے بعد، 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 ٹھیک ہے، ہم 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 مختلف widths کے. 83 00:04:46,360 --> 00:04:46,690 >> ٹھیک ہے. 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 میں کہ لکھنے، بھرتی انہوں نے مزید کہا، ہم 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 (ن) کے اوقات، اور ہر صف ہو اس کے ساتھ ساتھ (ن) بار بار بار. 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