[მუსიკის დაკვრა] რობ Bowden: Hi. მე Rob და მოდით ზომა ეს პრობლემა. ამიტომ, ჩვენ ვაპირებთ დავიწყოთ copy.c როგორც თარგი, მაგრამ ჩვენ ვაპირებთ, რომ იყოს რაც საკმაოდ ცვლილებები. ახლა ჩვენ ვხედავთ, რომ ჩვენ დაუყოვნებლივ მიღების შეცვლა სადაც ჩვენ აღარ შემოწმების ჩვენი rxc არ გაუტოლდება 3, მაგრამ ახლა ჩვენ შემოწმების rc არ გაუტოლდება 4. მას შემდეგ, რაც ჩვენ ასევე გვინდა მოიცავს, გარდა ფაილის და გარეთ ფაილები არგუმენტები, f, რომელიც იქნება ამ ფაქტორი, რომლითაც ჩვენ სკალირების. ასე რომ ერთხელ ჩვენ დარწმუნებული, რომ ჩვენ გვინდა გამოყენება ნანახია სკანირების ვ კონვერტირება სიმებიანი argv1 to float. და ჩვენ ვაპირებთ შესანახად რომ ფაქტორი. ეს დამატებითი ხასიათი მიღების დარწმუნებული ვარ, რომ ჩვენ რეალურად არ შევდივართ რაღაც 1.4 ABC ბრძანებათა ზოლს. ახლა ჩვენ ვაპირებთ შევქმნათ მაგალითი მას შემდეგ, რაც RV2 და RV3 არ არის ძალიან გამოსადეგი სახელები. ჩვენ, ნაცვლად, ვაპირებ მოვუწოდო მათ ფაილი და out ფაილი. ახლა ჩვენ ვაპირებთ, რომ დავრწმუნდეთ, რომ ჩვენი ფაქტორი იყო რეალურად მოქმედებს. ასე რომ, თუ ფაქტორი ნაკლებია ან ტოლი ნულოვანი ან აღემატება 100, შემდეგ პოსტი სპეც, ჩვენ უარი უნდა თქვას რომ ფაქტორი. როდესაც ჩვენ დარწმუნებული კარგია, ახლა ჩვენ შეგვიძლია გახსნა n ფაილი, და ჩვენ უნდა გააკეთოთ დარწმუნებული ვარ, რომ ის წარმატებით გაიხსნა. თუ ეს არ, რომ დაბრუნდება null. ჩვენ ვაპირებთ გახსნა out ფაილი. და ისევ, ჩვენ გვინდა შევამოწმოთ, რათა დარწმუნებული ვარ, რომ ის წარმატებით გაიხსნა. და თუ ეს არ წარმატებით გახსნა, შემდეგ ჩვენ ასევე უნდა იყოს დარწმუნებული დახურვა n ფაილი, რომელიც თავდაპირველად წარმატებით გახსნა, ანდა ჩვენ მეხსიერების გაჟონვის. ასე რომ, ახლა ჩვენ ვაპირებთ, რომ წაიკითხონ bitmap ფაილის header და bitmap ინფორმაცია თავი n ფაილი. ჩვენ ვაპირებთ, რომ დავრწმუნდეთ, რომ n ფაილი იყო სწორი bitmap. OK. ახლა ჩვენ ვაპირებთ დავიწყოთ მიღების გარკვეული ცვლილებები. ასე რომ, რადგან ჩვენ ვაპირებთ იცვლება რამ, პირველ რიგში უნდა გვახსოვდეს ძველი სიგანე n ფაილი. ჩვენ გვინდა, რომ მახსოვს ძველი padding of n ფაილი იმავე გაანგარიშება ეხლა copy.c. და ახლა ჩვენ ვაპირებთ, რომ შეიცვალოს bitmap ინფორმაცია header. და ამიტომ ჩვენ გამრავლებით ორივე სიგანე და სიმაღლე ფაქტორი, რადგან ის, რაც ჩვენ სკალირების მიერ. ჩვენ ვაპირებთ, რათა დადგინდეს ახალი padding ფაილი მიერ გამოყენებით ახალი სიგანე. და ჩვენ ვაპირებთ, რათა დადგინდეს new ზომის გამოსახულების გამოყენებით ნომერი ბაიტი ერთ row რომელიც აპირებს იყოს ნომერი pixels რომ row ჯერ ზომა pixel პლუს ნომერი ბაიტი padding დასასრულს რომ ზედიზედ, და გამრავლებით ყველა რომ რაოდენობის რიგები, რომ ჩვენ გვაქვს. ასე რომ ბაიტების რაოდენობას ჩვენ ჩვენი იმიჯი მონაცემები. Bf.Bfsize ახლა იქნება ნომერი ბაიტების ჩვენი იმიჯი beta პლუს ზომა ჩვენი headers. ასე რომ, პლუს ზომა Bitmap ფაილი header და ზომის bitmap ინფორმაცია header. OK. ასე რომ, ეს ჩვენი headers. ჩვენ შეგვიძლია დავწეროთ ფაილის ხელმძღვანელი და ინფორმაცია header ჩვენი out შეიტანოს, და ჩვენ კარგი. ახლა დროა დაიწყოს რეალურად წერა pixel მონაცემები out ფაილი. ჩვენ ვაპირებთ, რომ განაცხადოს ბუფერის ზომა ძველი სიგანე RGB საწოლიანი, და ჩვენ აპირებს განაცხადოს ცვლადში row numb, რომელიც ჩვენ ვაპირებთ თავდაპირველად მითითებული ტოლი 1. ჩვენ დავინახავთ, რომ ჩვენ ვაპირებთ იყოს გამოყენებით რომ იმისათვის, რომ ტრეკზე რა row ჩვენ გაკეთებული აქვს დატვირთული ამ ბუფერული. OK. ახლა, განსხვავებით სტანდარტული გამოცემა, ნაცვლად iterating ზე in ფაილი, ჩვენ ვაპირებთ iterate მეტი თითოეული ზედიზედ out ფაილი და გაერკვნენ რომელიც ზედიზედ ფაილი ჩვენ გვინდა განათავსეთ ამ ზედიზედ out ფაილი. ასე რომ iterating მეტი ყველა რიგები გარეთ ფაილის გამოყენებით ახალი სიმაღლე, ჩვენ პირველი აპირებს, რათა დადგინდეს ზედიზედ წლის ფაილი ჩვენ ვაპირებთ გამოვიყენოთ, რომლებიც ჩვენ გაკეთებას აპირებს აღების მიმდინარე row იყოფა ფაქტორია. ისე, რომ აპირებს მოგვცეს row ძველი ფაილი, რომელიც ჩვენ გვინდა. ახლა თუ row numb არ თანაბარი ძველი y, ჩვენ ვაპირებთ, რომ უნდა წაიკითხოთ row რომ ჩვენ გვინდა, ჩვენს მიმდ. ზედიზედ ბუფერული. ასე რომ, თუ ჩვენ ვაპირებთ, რომ გავაკეთოთ? პირველი, ჩვენ ვაპირებთ გაერკვნენ პოზიცია, რომ იწყება, რომ ზედიზედ ორიგინალურ ზომაში. ასე რომ, პოზიცია იქნება წარსულში ყველა ჩვენი ზედა და ახლა გასული წლის y რიგები. და ასე რამდენი ბაიტი არის ერთ ზედიზედ? ერთხელ, ზომა RGB triple ჯერ ძველი სიგანე plus წლის padding, ასე რომ ბაიტების რაოდენობას ერთ row. და ჩვენ გვინდა გამოტოვოთ წარსულში ძველი y რიგები. ამიტომ, ჩვენ ვაპირებთ, რომ f შეეცდება და ჩვენ გამოყენებით შეეცდება კომპლექტი იწყება დასაწყისში ფაილი. ჩვენ ვაპირებთ f ცდილობენ ამ თანამდებობაზე ფაილი, აყენებს ჩვენს დასაწყისში ზედიზედ გვინდა წაკითხვის ჩვენს ბუფერული. ჩვენ ვაპირებთ, რომ მითითებული row numb ტოლია ძველი y. ახლა თუ ჩვენ loop უკან და ჩვენ გვინდა, რომ გამოიყენოს ეს იგივე row ჩვენს out ფაილი, მაშინ ჩვენ არ ვაპირებთ წაკითხვის ეს კიდევ ერთხელ ზედმეტად. ასე რომ, რეალურად, row numb არის უბრალოდ ოპტიმიზაცია. და ბოლოს, ჩვენ ვაპირებთ წაიკითხა შევიდა მიმდინარე row ძველი სიგანე RGB საწოლიანი რომ ჩვენ გვინდა ორიგინალური ფაილი. ახლა მიმდ. row შეიცავს pixels დან ორიგინალური ფაილის, რომ ჩვენ გვინდა წერენ შევიდა out ფაილი. ახლა, ისევე, როგორც ზემოთ აღვნიშნეთ, ნაცვლად iterating მეტი ძველი ფაილი, ჩვენ გვჭირდება მას iterate მეტი ახალი ფაილი რიგები. ისე აქ, ნაცვლად iterating ყველა ძველი pixels რომ მიმდ. row, ჩვენ გვინდა iterate მეტი ყველა pixels ჩვენი ახალი ფაილი ამ კერძოდ row. რატომ გვინდა ამის გაკეთება? რადგან ჩვენ ვხედავთ, რომ ჩვენ არა ვართ რეალურად აუცილებლად გამოყენებით ყველა pixels ორიგინალური ფაილი. რადგან თუ ჩვენ მცირდება, ჩვენ შეგვიძლია ნამდვილად გინდათ გამოტოვოთ pixels. და ჩვენ ვხედავთ, რომ ამ - x იყოფა ფაქტორი - მჭიდროდ სარკეები აქ, სადაც ჩვენ ვამბობთ y იყოფა ფაქტორი უნდა გაერკვნენ, რომ ძველი y-th row შეესაბამება y-th row ამ ახალ ფაილს. ახლა ჩვენ ვაპირებთ დავწეროთ ყველა ამ pixels ძველი row ჩვენი ახალი row. მას შემდეგ, რაც ჩვენ გავაკეთეთ, რომ, ჩვენ გვჭირდება მხოლოდ დააყენა padding დასასრულს ჩვენი row და ჩვენ loop უკან და გაგრძელდება ყველა რიგები ჩვენი ახალი ფაილი. ბოლოს, ჩვენ უნდა დახუროს ჩვენი ძველი წარადგინოს, დახუროს ჩვენი ახალი ფაილი, და სანაცვლოდ ნულოვანი რადგან ყველაფერი წავიდა ჯარიმა. ჩემი სახელი არის რობ და ეს იყო Recess. [მუსიკის დაკვრა]