1 00:00:00,000 --> 00:00:00,996 2 00:00:00,996 --> 00:00:12,470 >> [Muusika mängib] 3 00:00:12,470 --> 00:00:13,210 >> ROB BOWDEN: Hi. 4 00:00:13,210 --> 00:00:16,870 Olen Rob ja olgem suurus kuni see probleem. 5 00:00:16,870 --> 00:00:20,990 Nii et me ei kavatse alustada copy.c kui template, kuid me ei kavatse olla 6 00:00:20,990 --> 00:00:23,340 tegemist üsna vähe muudatusi. 7 00:00:23,340 --> 00:00:27,570 >> Nüüd näeme me kohe teha muuta, kui me ei ole enam kontroll 8 00:00:27,570 --> 00:00:31,560 meie RXC ei võrdu 3, kuid nüüd me kontrollime rc ei võrdu 4. 9 00:00:31,560 --> 00:00:34,670 Kuna me soovime ka lisada, et Lisaks faili ja sealt faile 10 00:00:34,670 --> 00:00:39,550 argumente, f, mis saab olema selle tegur, millega me tagi. 11 00:00:39,550 --> 00:00:45,430 >> Nii et kui me oleme kindlad, et me tahame kasutada s scan f teisendada string 12 00:00:45,430 --> 00:00:49,030 argv1 et sularahaga. 13 00:00:49,030 --> 00:00:51,330 Ja me ei kavatse hoida et tegur. 14 00:00:51,330 --> 00:00:55,180 See täiendav märk on tagada, et me ei ole tegelikult sisenemist 15 00:00:55,180 --> 00:00:59,200 midagi 1,4 ABC at käsureal. 16 00:00:59,200 --> 00:01:02,960 >> Nüüd me ei kavatse luua mõned varjunimed alates RV2 ja RV3 ei 17 00:01:02,960 --> 00:01:04,310 väga kasulik nimed. 18 00:01:04,310 --> 00:01:07,660 Me hoopis kutsun neid faili ja sealt failist. 19 00:01:07,660 --> 00:01:11,580 Nüüd me ei kavatse veenduge, et meie tegur oli tegelikult kehtiv. 20 00:01:11,580 --> 00:01:16,330 Niisiis, kui tegur on väiksem või võrdne null või suurem kui 100, siis ühe 21 00:01:16,330 --> 00:01:19,660 spec, me peaks tagasi lükkama et tegur. 22 00:01:19,660 --> 00:01:23,890 >> Kui me oleme kindlad, et see on hea, nüüd saame avada n faili, ja me peame tegema 23 00:01:23,890 --> 00:01:25,950 kindel, et see on edukalt avatud. 24 00:01:25,950 --> 00:01:28,630 Kui see ei ole, et naaseb null. 25 00:01:28,630 --> 00:01:30,390 Me läheme avada välja faili. 26 00:01:30,390 --> 00:01:33,420 Ja veel, me tahame, et kontrollida, et teha kindel, et see on edukalt avatud. 27 00:01:33,420 --> 00:01:37,270 Ja kui see ei ole edukalt avada, siis peame ka kindlasti sulgeda 28 00:01:37,270 --> 00:01:40,870 n faili, mis algselt edukalt avatud, muidu on meil 29 00:01:40,870 --> 00:01:42,600 mälu leke. 30 00:01:42,600 --> 00:01:46,350 >> Nüüd me ei kavatse lugeda bitmap faili päis ja bitmap info 31 00:01:46,350 --> 00:01:48,890 header alates n faili. 32 00:01:48,890 --> 00:01:52,360 Me veenduge, et n fail oli kehtiv bitmap. 33 00:01:52,360 --> 00:01:52,640 OK. 34 00:01:52,640 --> 00:01:55,100 >> Nüüd me ei kavatse hakata teha mõned muudatused. 35 00:01:55,100 --> 00:01:58,840 Niisiis, kuna me ei kavatse olla muutumas asjad, me esimest korda taha mäletada 36 00:01:58,840 --> 00:02:01,510 vana laius n faili. 37 00:02:01,510 --> 00:02:05,160 Tahame meenub vana polster n faili kasutades sama arvutus 38 00:02:05,160 --> 00:02:06,990 alates copy.c. 39 00:02:06,990 --> 00:02:09,840 >> Ja nüüd me muudame bitmap info kaudu. 40 00:02:09,840 --> 00:02:13,630 Ja nii me korrutame mõlemad laius ja kõrgust tegur, sest 41 00:02:13,630 --> 00:02:15,750 see on, mida me tagi järgi. 42 00:02:15,750 --> 00:02:18,420 Me määrata uus polster fail 43 00:02:18,420 --> 00:02:21,140 kasutades uusi laiusega. 44 00:02:21,140 --> 00:02:27,330 Ja me ei kavatse määrata uus pildi suurust, kasutades arvu 45 00:02:27,330 --> 00:02:31,610 baiti ühes reas, mis läheb olema pikslite arv selles reas 46 00:02:31,610 --> 00:02:35,960 korda suurem pixel plus baitide arv padding lõpus 47 00:02:35,960 --> 00:02:40,310 selle rea ja korrutades kogu selle mitmeid ridu, mis meil on. 48 00:02:40,310 --> 00:02:43,800 Nii et baitide arv oleme meie pilti. 49 00:02:43,800 --> 00:02:48,190 >> Bf.Bfsize nüüd saab olema number baitide meie pilt beta pluss 50 00:02:48,190 --> 00:02:49,350 suurus meie päiseid. 51 00:02:49,350 --> 00:02:53,910 Nii pluss suurus bitmap faili päis ja suurus bitmap info päises. 52 00:02:53,910 --> 00:02:54,510 OK. 53 00:02:54,510 --> 00:02:56,440 Nii ongi meie päised. 54 00:02:56,440 --> 00:02:59,030 Me ei kirjuta faili juht ja info header meie välja 55 00:02:59,030 --> 00:03:01,590 esitada, ja me oleme head. 56 00:03:01,590 --> 00:03:03,800 >> Nüüd on aeg hakata tegelikult kirjalikult pixel 57 00:03:03,800 --> 00:03:05,120 andmeid välja faili. 58 00:03:05,120 --> 00:03:10,460 Me kinnitame puhvri suurus vana laius RGB kolmikute ja me oleme 59 00:03:10,460 --> 00:03:13,790 kavatse kuulutada muutuja nimega rida tuimaks, mis me 60 00:03:13,790 --> 00:03:15,640 esialgu võrdne miinus 1. 61 00:03:15,640 --> 00:03:19,090 Me näeme, et me ei kavatse olla kasutades et selleks, et jälgida, mida 62 00:03:19,090 --> 00:03:22,640 rida meil on praegu koormatud sellesse puhver. 63 00:03:22,640 --> 00:03:23,290 OK. 64 00:03:23,290 --> 00:03:28,750 >> Nüüd erinevalt standard edition, asemel iterating üle mis on 65 00:03:28,750 --> 00:03:32,900 fail, me Käi iga rida välja fail ja nuputada 66 00:03:32,900 --> 00:03:38,130 mis rida failis tahame Koht selles reas välja faili. 67 00:03:38,130 --> 00:03:44,930 Nii iterating üle kõik read läbi faili uus kõrgus, me oleme esimene 68 00:03:44,930 --> 00:03:48,890 läheb kindlaks rida vana fail me ei kavatse kasutada, mis me oleme 69 00:03:48,890 --> 00:03:53,560 teeme võttes selle praegune rida jagatud teguriga. 70 00:03:53,560 --> 00:03:58,000 Nii et läheb meile rida vana faili, mida me tahame. 71 00:03:58,000 --> 00:04:03,310 >> Nüüd, kui järjest tuimaks ei võrdu vana y, me peame lugema rida 72 00:04:03,310 --> 00:04:05,940 et me tahame meie viim rida puhver. 73 00:04:05,940 --> 00:04:07,700 Niisiis, kuidas me saame seda teha? 74 00:04:07,700 --> 00:04:11,650 Esiteks, me lähme välja selgitada, seisukoht, mis algab selle rea 75 00:04:11,650 --> 00:04:13,100 originaal faili. 76 00:04:13,100 --> 00:04:18,630 Nii et positsioon saab olema varem kõik meie päised ja 77 00:04:18,630 --> 00:04:21,589 nüüd minevik vana y read. 78 00:04:21,589 --> 00:04:23,880 >> Ja kui palju baite on ühes reas? 79 00:04:23,880 --> 00:04:28,740 Jällegi suurus RGB triple korda vana laius pluss vana polster, nii et see 80 00:04:28,740 --> 00:04:30,640 baitide arv ühes reas. 81 00:04:30,640 --> 00:04:33,680 Ja me tahame vahele varem vana y read. 82 00:04:33,680 --> 00:04:37,580 Nii et me läheme f otsima ja me oleme kasutades otsima komplekt alustada 83 00:04:37,580 --> 00:04:39,100 alguses faili. 84 00:04:39,100 --> 00:04:42,740 Me f püüdma seda seisukohta fail, paneb meid 85 00:04:42,740 --> 00:04:46,500 alguses rida tahame lugeda meie puhver. 86 00:04:46,500 --> 00:04:48,510 >> Me kehtestatud rida tuim võrdne vana y. 87 00:04:48,510 --> 00:04:53,080 Nüüd, kui me loop tagasi ja me tahame kasutada sama rida meie out fail 88 00:04:53,080 --> 00:04:55,970 siis me ei loe see jälle asjatult. 89 00:04:55,970 --> 00:04:59,310 Nii et tõesti, järjest tuim on lihtsalt optimeerimine. 90 00:04:59,310 --> 00:05:05,500 >> Lõpuks me läheme välja lugeda praegune rida vana laius RGB kolmekordistab 91 00:05:05,500 --> 00:05:08,040 et tahame originaalfaili. 92 00:05:08,040 --> 00:05:12,270 Nüüd viim reas on pikslid originaalfaili, et me tahame 93 00:05:12,270 --> 00:05:14,200 kirjutage välja faili. 94 00:05:14,200 --> 00:05:18,960 Nüüd, just nagu eespool asemel iterating üle vana faili, peame 95 00:05:18,960 --> 00:05:22,560 see Käi uusi faile rida. 96 00:05:22,560 --> 00:05:27,450 Noh siin, selle asemel iterating üle kõik vana px et viim järjest 97 00:05:27,450 --> 00:05:31,210 tahame Käi kõik pikslite meie uus fail selles 98 00:05:31,210 --> 00:05:32,480 Eelkõige järjest. 99 00:05:32,480 --> 00:05:34,140 >> Miks me tahame seda teha? 100 00:05:34,140 --> 00:05:38,960 Sest me näeme siin, et me ei ole tegelikult tingimata kasutades kõiki 101 00:05:38,960 --> 00:05:41,020 pikslite originaalfaili. 102 00:05:41,020 --> 00:05:46,630 Sest kui me kahanemine, võiksime tegelikult soovite vahele pikslit. 103 00:05:46,630 --> 00:05:48,090 Ja me näeme, et see - 104 00:05:48,090 --> 00:05:49,690 x jagatud tegur - 105 00:05:49,690 --> 00:05:55,620 peegeldab siin, kus me ütleme y jagatud tegur nuputada, et 106 00:05:55,620 --> 00:06:02,480 vana y-ndas reas vastab y-nda rea ​​selle uue faili. 107 00:06:02,480 --> 00:06:05,880 >> Nüüd me ei kavatse kirjutada kõik need pikslit vanast rida 108 00:06:05,880 --> 00:06:07,440 meie uus rida. 109 00:06:07,440 --> 00:06:10,890 Kui oleme teinud, et me peame lihtsalt pane padding lõpus meie rida 110 00:06:10,890 --> 00:06:15,540 Ja me loop tagasi ja jätkata kõik read meie uus fail. 111 00:06:15,540 --> 00:06:19,390 Lõpus peame sulgeda vana fail, sulgeda oma uue faili ja tagastamine 112 00:06:19,390 --> 00:06:21,540 null, sest kõik läks hästi. 113 00:06:21,540 --> 00:06:24,220 >> Minu nimi on Rob ja see oli süvistatud. 114 00:06:24,220 --> 00:06:29,184 >> [Muusika mängib]