[موسیقی بجانا] روب Bowden: ہیلو، میں روب ہوں، چلو سائز کے لئے اس کی کوشش کریں. لہذا، ہم ایک بار پھر سے شروع کرنے کے لئے جا رہے ہیں بنیادی طور پر ایک copy.c کی کاپی، اور چند تبدیلیاں کرنے کے. فوری طور پر ہم نے ایک تبدیلی دیکھ نوٹ جہاں بجائے اس کے دیکھنے کے لئے کی جانچ پڑتال کے اگر جہاں argc، ہم چیک کرنے کے 3 برابر نہیں چاہتا ہے جہاں argc کے بعد، 4 کے برابر نہیں کرتا ہے تو اب ہم صرف ایک infile میں نہیں لے رہے ہیں اور outfile، لیکن ہم یہ بھی میں لے جا رہے ہیں ہم اس رقم ہے جو ن، اصل تصویر کی طرف سے سکیلنگ. ہم اس بات کا یقین کر رہے ہیں ایک بار، ہم کر سکتے ہیں atoi کا استعمال کرتے ہوئے ایک عدد صحیح ن میں تبدیل. تو، اب ہم نے کچھ پیدا کرنے کے لئے جا رہے ہیں عرفی نام، صرف 2 infile ہے argv کہتے ہیں، اور ہے argv 3 outfile ہے، argv 2 اور اس کی وجہ ہے argv 3 بہت مددگار ثابت کے نام نہیں ہیں. اب ہم اس بات کا یقین ن ہے بنانے کے لئے کی جانچ کرنا چاہتے حد کے اندر اندر ہم امید کرتے ہیں، تو رپورٹ کی وضاحت ہے کہ اس سے کم یا اگر ، صفر کے برابر، یا 100 سے زیادہ تو یہ ایک غلط بازسائز عنصر ہے، اور ہم اس کے صارف کو آگاہ کرنا چاہئے. ہم سب اس کے بعد کر رہے ہیں ایک بار، ہم کر سکتے ہیں آخر ہمارے infile کھولنے، اور ہم نے کی ضرورت ہے اس بات کو یقینی بنانے کے لئے چیک کرنے کے لیے غلطی پر افتتاحی کسی وجہ کے لئے میں ناکام رہے تھے. ہم نے بھی ہمارے outfile کھولنے کی ضرورت ہے، اور پھر اس بات کا یقین ہے کہ بنانے کے لئے چیک کرنے کے لیے غلطی کسی وجہ سے ناکام نہیں کیا. لیکن اس بات کا یقین ہو جائے تو کی افتتاحی outfile ہم قریب کرنے کی ضرورت ہے میں ناکام پہلے ہی کھولا گیا تھا جس infile،. تو، پھر، کہ ناکام نہیں کیا سنبھالنے we're - صرف میں copy.c - ہیڈر میں پڑھنے کے لئے جا infile سے. ہمیں یقین ہے کہ یہ ایک درست ہے کرنے کے لئے جا رہے ہیں بٹ نقشہ، لیکن اب ہم کچھ کرنے جا رہے ہیں تھوڑا سا مختلف چیزیں. تو سب سے پہلے، ہم چاہتے ہیں کے لئے جا رہے ہیں اصل چوڑائی اور اونچائی یاد infile کی، کیونکہ ہم جا رہے ہیں outfile کے لئے اس کو تبدیل کیا جائے. تو اب عجیب وجوہات کے لئے یاد رکھیں کہ bi.biheight، منفی ہے، اور تو اصل اونچائی، مثبت، ہم مطلق قدر لے جانا چاہتا ہوں. اب، بھرتی ہی جا رہا ہے اس copy.c میں تھا حساب کے طور پر، پرانے چوڑائی کا استعمال کرتے ہوئے، اور اب ہم ہیں اصل میں تبدیل کرنے جا رہا ہمارے ہیڈر میں کیا. تو ہم نے کی طرف سے ہمارے چوڑائی ضرب کرنے جا رہے ہیں (ن)، ہم سے چوڑائی پیمائی کر رہے ہیں ہم کر رہے ہیں ن،، ن کی طرف سے اونچائی ضرب (ن) کی طرف سے پیمائی، اور اب ہم نے ایک نئی بھرتی کے لئے حساب نئے چوڑائی کی بنیاد پر. تو اب ہم کچھ تبدیل کرنے کی ضرورت ہمارے ہیڈر میں دوسرے شعبوں. Bi.biSizeImage کرنا ہے پکسلز میں تمام بائٹس کا سائز اور تصویر کے بھرتی. اور ہماری ایک ایک صف کا سائز تصویر آرجیبی کا سائز ٹرپل، سائز ہے ایک پکسل کی، بار کی تعداد کے ایک قطار میں پکسلز، کے علاوہ بھرتی میں قطار کے اختتام پر. اور پھر ہم سے کہ ضرب کرنے جا رہے ہیں حاصل کرنے کے لئے ہماری اونچائی کی مطلق قیمت بائٹس کی کل تعداد تصویر کے اعداد و شمار میں. bf.bfSize صرف کل تعداد ہے کی ہماری تصویر کے اعداد و شمار میں بائٹس، تو bi.biSizeImage، علاوہ ہمارے ہیڈر کا سائز. تو، بٹ نقشہ فائل کے سائز پر انہوں نے مزید کہا بٹ نقشہ معلومات کے ہیڈر، اور سائز ٹھیک ہے، ہیڈر. تو ہے کہ ہم سب کی ضرورت ہے ہمارے ہیڈر میں تبدیل. اب ہم بٹ نقشہ فائل ہیڈر لکھیں گے ہمارے outfile، اور ہماری بٹ نقشہ معلومات اب ہمارے outfile ہیڈر، اور ہم جا شروع کرنے کے لئے تیار ہیں اصل پکسلز زیادہ. تو ہم پر iterate کرنا چاہتے ہیں infile کی اسکین لائنوں. تو ہم oldheight پر iterate کرنا چاہتے ہیں. ہم یاد کرنے کی ضرورت ہے یہی وجہ ہے کہ ہم اسے تبدیل کرنے سے پہلے اصل اونچائی، اور (ن) کی طرف سے یہ چھوٹا. اب ہم ایک پڑھنے کے لئے جا رہے ہیں ایک میں infile کی قطار سائز oldwidth کے بفر. آرجیبی کی تو یہاں ہم freading رہے سائز ٹرپل، ایک پکسل، اور پرانے کی چوڑائی ہمارے بفر میں infile سے ان. اور یہ کہ ایک پورے ہونے جا رہا ہے اس صف میں صف. تو اب، ہم (ن) کے اوقات iterate کرنا چاہتے ہیں ہمارے outfile ن بار اس صف پرنٹ. اور تو ہے کہ اس لوپ کر رہا ہے. یہ اندرونی لوپ پر iterating ہے صف، پرنٹنگ پر، خود کو صف صف ن اوقات میں ہر پکسل. تو zeroth عنصر طباعت کیا جا رہا ہے N اوقات، پہلا عنصر جا رہا ہے N اوقات طباعت. اور اس طرح کی ہم کس طرح جا رہے ہیں ہے افقی outfile میں پیمانے، اور اس لوپ، ہم ن looping کر رہے ہیں کے بعد سے بار، ہم جا رہے ہیں کس طرح ہے عمودی پیمانے پر. یہاں، ہم نے شامل کرنے کی ضرورت دیکھتے ہیں کہ ہر صف کے آخر میں بھرتی. اس کے لئے لوپ کے اندر ہے یہی وجہ ہے کہ کہ بس کی ن قطار چھپائی ہے infile سے یہ ایک صف. پھر یہاں نیچے، میں نے چھوڑ جا رہا ہوں infile میں بھرتی، ایک بار کے بعد ہم میں سے ایک صف کے ساتھ کیا کر رہے ہیں infile، ہم کے بارے میں پرواہ نہیں ہے کیا بھرتی کیا گیا تھا. ہم صرف دوسری صف کے لئے حاصل کرنے کے لئے چاہتے ہیں. اور پھر ہم واپس لوپ گے اور سب کر اس نے پھر دوسری صف کے لئے. آخر میں، ایک بار ہم سب اس کے ساتھ کیا کر رہے ہیں، ہم قریب، infile بند کر سکتے ہیں outfile، اور واپسی 0 ہم کیا کر رہے ہیں کی وجہ سے. میرا نام روب ہے، اور اس کا سائز تبدیل کیا گیا تھا. [موسیقی بجانا]