>> [მუსიკის დაკვრა]
>> რობ Bowden: Hi, მე Rob, მოდით ცდილობენ ეს ზომა.
ასე რომ, ჩვენ კიდევ ერთხელ აპირებს იწყება ძირითადად ასლი copy.c და
რამდენიმე ცვლილებები.
შენიშვნა დაუყოვნებლივ ვხედავთ ცვლილება, სადაც ნაცვლად შემოწმების თუ
argc არ უდრის 3, ჩვენ გვინდა შევამოწმოთ თუ argc არ თანაბარი 4 წლიდან
ახლა ჩვენ არა მხოლოდ აღების infile და outfile, მაგრამ ჩვენ ასევე აღების
n, რომელიც არის თანხა, რომ ჩვენ სკალირების ორიგინალური იმიჯი მიერ.
მას შემდეგ, რაც ჩვენ დარწმუნებული, რომ ჩვენ შეგვიძლია მხოლოდ კონვერტირება n მთელი რიცხვი გამოყენებით atoi.
>> ასე რომ, ახლა ჩვენ ვაპირებთ, რომ შევქმნათ მაგალითი, მხოლოდ დარეკვა argv 2 infile და
argv 3 outfile, რადგან argv 2 და argv 3 არ არის ძალიან გამოსადეგი სახელები.
ახლა ჩვენ გვინდა შეამოწმეთ დარწმუნდით N არის ფარგლებში ჩვენ ველით, ისე
სპეც მიუთითებს, რომ თუ ის ნაკლებია ან ნულის ტოლია, ან აღემატება 100,
მაშინ რომ არასწორი ზომა ფაქტორი, და ჩვენ უნდა გააფრთხილოს შესახებ, რომ.
>> მას შემდეგ, რაც ჩვენ მიღმა ყველა რომ, ჩვენ შეგვიძლია საბოლოოდ გახსნა ჩვენი infile, და ჩვენ გვჭირდება
შეცდომა შემოწმება, რათა დავრწმუნდეთ, რომ გახსნა არ ჩავარდება რატომღაც.
ჩვენ ასევე უნდა გახსნა ჩვენი outfile და ისევ შეცდომა შემოწმება დარწმუნდით, რომ
არ ვერ რატომღაც.
მაგრამ დარწმუნებული უნდა იყოს, თუ გახსნის outfile ვერ, რომ ჩვენ უნდა დახუროს
infile, რომელიც უკვე გაიხსნა.
>> ასე რომ, თუ გავითვალისწინებთ, რომ არ ვერ, მაშინ we're - ისევე, როგორც copy.c--
აპირებს წაიკითხონ header საწყისი infile.
ჩვენ ვაპირებთ, რომ დავრწმუნდეთ, რომ ეს სწორი bitmap, მაგრამ ახლა ჩვენ ვაპირებთ, რომ გავაკეთოთ ზოგიერთი
რამ ცოტა განსხვავებულად.
ასე რომ, პირველი, ჩვენ ვაპირებთ, რომ გსურთ მახსოვს ორიგინალური სიგანე და სიმაღლე
საქართველოს infile, რადგან ჩვენ ვაპირებთ იცვლება იგი outfile.
ასე რომ, ახლა მახსოვს, რომ უცნაური მიზეზები bi.biheight, არის უარყოფითი, და
ასე რომ, ნამდვილი სიმაღლე, დადებითი, ჩვენ სურს მიიღოს აბსოლუტური ღირებულება.
>> ახლა, padding იქნება იგივე გაანგარიშება როგორც ეს იყო copy.c,
გამოყენებით ძველი სიგანე, და ახლა ჩვენ რეალურად შეიცვლება
რა არის ჩვენი header.
ამიტომ, ჩვენ ვაპირებთ გავამრავლოთ ჩვენი სიგანე n, რადგან ჩვენ სკალირების სიგანე
n, გავამრავლოთ სიმაღლე n, რადგან ჩვენ სკალირების by n, და ახლა ჩვენ გვაქვს
გაანგარიშება ახალი padding საფუძველზე ახალი სიგანე.
>> ასე რომ, ახლა ჩვენ უნდა შეცვალოს ზოგიერთი სხვა სფეროებში ჩვენი header.
Bi.biSizeImage უნდა იყოს ზომა ყველა bytes in pixels
და padding გამოსახულება.
და ასე ზომა ერთ გრაფაში ჩვენი გამოსახულების ზომა RGB triple, ზომა
ერთი pixel, ჯერ რაოდენობა pixels in a row, პლუს padding at
ბოლოს row.
და მაშინ ჩვენ ვაპირებთ გავამრავლოთ რომ აბსოლუტური ღირებულება ჩვენი სიმაღლე მისაღებად
საერთო რაოდენობის bytes იმიჯი მონაცემები.
bf.bfSize მხოლოდ საერთო რაოდენობა ბაიტების ჩვენი იმიჯი მონაცემები, ასე რომ,
bi.biSizeImage, პლუს ზომა ჩვენი headers.
ასე რომ, დასძინა ზომა Bitmap ფაილი header, და ზომის bitmap ინფორმაცია
header, OK.
ასე რომ ყველა ჩვენ გვჭირდება იცვლება ჩვენი headers.
ახლა ჩვენ წერენ Bitmap ფაილი header ჩვენს outfile და ჩვენი bitmap ინფორმაცია
header ჩვენს outfile და ახლა ჩვენ მზად ვართ დავიწყოთ აპირებს
მეტი ფაქტობრივი pixels.
>> ასე რომ ჩვენ გვინდა iterate მეტი infile მიერ სკანირების ხაზები.
ასე რომ ჩვენ გვინდა iterate მეტი oldheight.
ამიტომ, საჭიროა გვახსოვდეს ორიგინალური სიმაღლე, სანამ ჩვენ მას ვცვლით
და მასშტაბური მიერ n.
ახლა ჩვენ ვაპირებთ წაკითხვის ერთი გრაფაში infile შევიდა
ბუფერის ზომა oldwidth.
ასე რომ აქ, ჩვენ freading ზომა RGB სამჯერ, ერთი pixel, და ძველი სიგანე
მათ infile ჩვენს ბუფერული.
და რომ იქნება მთელი ზედიზედ ამ მასივი.
ახლა, ჩვენ გვინდა iterate n ჯერ ბეჭდვა ამ row ჩვენს outfile n ჯერ.
და ისე, რომ ის, რაც ამ loop აკეთებს.
ეს შიდა მარყუჟი iterating მეტი ზედიზედ თავისთავად, მეტი მასივი, ბეჭდვა
თითოეული პიქსელის მასივი N ჯერ.
ასე რომ zeroth ელემენტი იბეჭდება n ჯერ, პირველ ელემენტს მიმდინარეობს
ნაბეჭდი n ჯერ.
და რომ ერთგვარი როგორ ჩვენ ვაპირებთ ჰორიზონტალურად მასშტაბებს outfile და
ამ მარყუჟის, რადგან ჩვენ looping n ჯერ, თუ როგორ ვაპირებთ
ვერტიკალურად მასშტაბით.
>> ქვემოთ აქ, ჩვენ ვხედავთ, რომ ჩვენ უნდა დაამატოთ padding დასასრულს თითოეული მწკრივი.
ამიტომ ამ არის შიგნით მარყუჟის რომ დაბეჭდვისას n რიგები მხოლოდ
ამ ერთი row საწყისი infile.
შემდეგ ქვევით აქ, მე ვაპირებ გამოტოვოთ მეტი padding წელს infile, რადგან ერთხელ
ჩვენ გავაკეთეთ ერთ გრაფაში infile, ჩვენ არ აინტერესებს
რა padding იყო.
ჩვენ უბრალოდ გვინდა მეორე რიგის.
და მაშინ ჩვენ loop უკან და ყველაფერი ეს კიდევ ერთხელ მეორე row.
>> და ბოლოს, ერთხელ ჩვენ გაკეთდეს ყველა რომ, ჩვენ შეგიძლიათ დახუროთ infile ახლოს,
outfile და დაბრუნება 0, რადგან ჩვენ გავაკეთეთ.
>> ჩემი სახელი არის რობ, და ეს იყო ზომა.
>> [მუსიკის დაკვრა]