1 00:00:00,000 --> 00:00:00,996 2 00:00:00,996 --> 00:00:12,470 >> [MUZIK Bermain] 3 00:00:12,470 --> 00:00:13,210 >> ROB Bowden: Hi. 4 00:00:13,210 --> 00:00:16,870 Saya Rob dan biarkan saiz ini sehingga masalah ini. 5 00:00:16,870 --> 00:00:20,990 Jadi, kita akan bermula dengan copy.c sebagai templat, tetapi kita akan menjadi 6 00:00:20,990 --> 00:00:23,340 membuat agak beberapa perubahan. 7 00:00:23,340 --> 00:00:27,570 >> Sekarang kita lihat kita segera membuat menukar mana kita tidak lagi memeriksa 8 00:00:27,570 --> 00:00:31,560 untuk rxc kita tidak sama 3, tetapi sekarang kami memeriksa rc tidak sama 4. 9 00:00:31,560 --> 00:00:34,670 Oleh kerana kita juga mahu termasuk, Selain dalam fail dan fail yang 10 00:00:34,670 --> 00:00:39,550 hujah, f yang akan menjadi ini faktor yang mana kita mendaki. 11 00:00:39,550 --> 00:00:45,430 >> Jadi sebaik sahaja kami pasti itu, kami ingin menggunakan s imbasan f untuk menukar tali 12 00:00:45,430 --> 00:00:49,030 argv1 kepada apungan. 13 00:00:49,030 --> 00:00:51,330 Dan kita akan menyimpan bahawa dalam faktor. 14 00:00:51,330 --> 00:00:55,180 Ini watak tambahan adalah memastikan bahawa kita tidak sebenarnya memasuki 15 00:00:55,180 --> 00:00:59,200 sesuatu seperti 1.4 ABC pada baris arahan. 16 00:00:59,200 --> 00:01:02,960 >> Sekarang kita akan membuat beberapa nama samaran yang berbeza sejak RV2 dan RV3 tidak 17 00:01:02,960 --> 00:01:04,310 nama sangat membantu. 18 00:01:04,310 --> 00:01:07,660 Kami, sebaliknya, akan memanggil di dalam fail dan keluar fail. 19 00:01:07,660 --> 00:01:11,580 Sekarang kita akan memastikan bahawa faktor kami sebenarnya sah. 20 00:01:11,580 --> 00:01:16,330 Jadi, jika faktor kurang daripada atau sama dengan sifar atau lebih daripada 100, maka seperti 21 00:01:16,330 --> 00:01:19,660 spec, kita harus menolak faktor yang. 22 00:01:19,660 --> 00:01:23,890 >> Apabila kita pasti ia baik, sekarang kita boleh membuka fail n, dan kita perlu membuat 23 00:01:23,890 --> 00:01:25,950 memastikan bahawa ia telah berjaya dibuka. 24 00:01:25,950 --> 00:01:28,630 Jika ia tidak, yang akan kembali null. 25 00:01:28,630 --> 00:01:30,390 Kami akan membuka fail keluar. 26 00:01:30,390 --> 00:01:33,420 Dan sekali lagi, kita mahu periksa untuk memastikan ia berjaya dibuka. 27 00:01:33,420 --> 00:01:37,270 Dan jika ia tidak berjaya membuka, maka kita juga perlu pastikan anda menutup 28 00:01:37,270 --> 00:01:40,870 file n yang asalnya berjaya dibuka, jika tidak kita mempunyai 29 00:01:40,870 --> 00:01:42,600 memori kebocoran. 30 00:01:42,600 --> 00:01:46,350 >> Jadi sekarang kita akan dibaca bitmap header fail dan maklumat bitmap 31 00:01:46,350 --> 00:01:48,890 header dari fail n. 32 00:01:48,890 --> 00:01:52,360 Kami akan memastikan bahawa n fail adalah bitmap yang sah. 33 00:01:52,360 --> 00:01:52,640 OK. 34 00:01:52,640 --> 00:01:55,100 >> Jadi sekarang kita akan memulakan membuat beberapa perubahan. 35 00:01:55,100 --> 00:01:58,840 Jadi kerana kita akan berubah perkara, kita mahu ingat 36 00:01:58,840 --> 00:02:01,510 lebar lama fail n. 37 00:02:01,510 --> 00:02:05,160 Kami mahu ingat padding lama file n dengan menggunakan pengiraan yang sama 38 00:02:05,160 --> 00:02:06,990 dari copy.c. 39 00:02:06,990 --> 00:02:09,840 >> Dan sekarang kita akan berubah maklumat header bitmap. 40 00:02:09,840 --> 00:02:13,630 Dan jadi kita mendarabkan kedua-dua lebar dan ketinggian dengan faktor sejak 41 00:02:13,630 --> 00:02:15,750 itulah yang kita sedang mendaki oleh. 42 00:02:15,750 --> 00:02:18,420 Kami akan menentukan padding baru fail dengan 43 00:02:18,420 --> 00:02:21,140 menggunakan lebar baru. 44 00:02:21,140 --> 00:02:27,330 Dan kita akan menentukan baru saiz imej dengan menggunakan jumlah 45 00:02:27,330 --> 00:02:31,610 bait dalam barisan tunggal yang akan menjadi bilangan piksel berturut-turut yang 46 00:02:31,610 --> 00:02:35,960 kali saiz pixel tambah yang beberapa bait padding di hujung 47 00:02:35,960 --> 00:02:40,310 baris itu, dan mendarabkan semua yang oleh bilangan baris yang kita ada. 48 00:02:40,310 --> 00:02:43,800 Jadi, itu bilangan bait kita ada dalam data imej kami. 49 00:02:43,800 --> 00:02:48,190 >> Bf.Bfsize kini akan menjadi bilangan daripada bait dalam beta imej kami ditambah 50 00:02:48,190 --> 00:02:49,350 saiz header kami. 51 00:02:49,350 --> 00:02:53,910 Saiz supaya plus header fail bitmap dan saiz info bitmap header. 52 00:02:53,910 --> 00:02:54,510 OK. 53 00:02:54,510 --> 00:02:56,440 Jadi itu sahaja untuk header kami. 54 00:02:56,440 --> 00:02:59,030 Kita boleh menulis kepala fail dan maklumat header untuk keluar kami 55 00:02:59,030 --> 00:03:01,590 memfailkan, dan kami baik. 56 00:03:01,590 --> 00:03:03,800 >> Kini sudah tiba masanya untuk memulakan sebenarnya menulis piksel 57 00:03:03,800 --> 00:03:05,120 data ke fail keluar. 58 00:03:05,120 --> 00:03:10,460 Kami akan mengisytiharkan penampan saiz lebar RGB lama Pahat,, dan kami 59 00:03:10,460 --> 00:03:13,790 akan mengisytiharkan pembolehubah yang dipanggil kebas berturut-turut, yang kita akan 60 00:03:13,790 --> 00:03:15,640 pada mulanya ditetapkan sama dengan negatif 1. 61 00:03:15,640 --> 00:03:19,090 Kita akan melihat bahawa kita akan menggunakan bahawa untuk mengesan apa 62 00:03:19,090 --> 00:03:22,640 berturut-turut kita kini telah dimuatkan ke dalam buffer ini. 63 00:03:22,640 --> 00:03:23,290 OK. 64 00:03:23,290 --> 00:03:28,750 >> Jadi sekarang tidak seperti edisi standard, bukan iterating alih di dalam 65 00:03:28,750 --> 00:03:32,900 fail, kita akan melelar atas setiap baris dalam fail keluar dan memikirkan 66 00:03:32,900 --> 00:03:38,130 yang baris dalam fail dalam kita mahu meletakkan di baris ini dalam fail keluar. 67 00:03:38,130 --> 00:03:44,930 Jadi iterating atas semua baris dalam keluar memfailkan menggunakan ketinggian baru, kami pertama 68 00:03:44,930 --> 00:03:48,890 akan menentukan barisan di lama memfailkan kita akan digunakan, yang kami 69 00:03:48,890 --> 00:03:53,560 akan melakukan dengan mengambil semasa ini berturut-turut dibahagikan dengan faktor. 70 00:03:53,560 --> 00:03:58,000 Jadi perkara yang berlaku untuk memberikan kita barisan dalam fail lama yang kita mahu. 71 00:03:58,000 --> 00:04:03,310 >> Jadi sekarang jika barisan kebas tidak sama y lama, kita akan perlu membaca barisan 72 00:04:03,310 --> 00:04:05,940 yang kita mahu ke dalam berturut-turut kini penampan kami. 73 00:04:05,940 --> 00:04:07,700 Jadi bagaimana kita boleh berbuat demikian? 74 00:04:07,700 --> 00:04:11,650 Pertama, kita akan memikirkan kedudukan yang bermula berturut-turut bahawa dalam 75 00:04:11,650 --> 00:04:13,100 fail asal. 76 00:04:13,100 --> 00:04:18,630 Jadi kedudukan itu akan menjadi lalu semua header dan 77 00:04:18,630 --> 00:04:21,589 baris y lama kini yang lalu. 78 00:04:21,589 --> 00:04:23,880 >> Dan sebagainya berapa banyak bait berada dalam barisan tunggal? 79 00:04:23,880 --> 00:04:28,740 Sekali lagi, saiz RGB kali tiga kali ganda lama lebar ditambah padding lama, jadi itulah 80 00:04:28,740 --> 00:04:30,640 beberapa bait dalam satu baris. 81 00:04:30,640 --> 00:04:33,680 Dan kita mahu melangkau baris lalu y lama. 82 00:04:33,680 --> 00:04:37,580 Oleh itu, kita akan mendapatkan f dan kami menggunakan mendapatkan set untuk bermula dari 83 00:04:37,580 --> 00:04:39,100 permulaan fail. 84 00:04:39,100 --> 00:04:42,740 Kami akan berusaha untuk f kedudukan ini dalam fail, meletakkan kita di 85 00:04:42,740 --> 00:04:46,500 permulaan baris yang kita mahu untuk membaca ke dalam buffer kami. 86 00:04:46,500 --> 00:04:48,510 >> Kami akan menetapkan berturut-turut kebas sama dengan y lama. 87 00:04:48,510 --> 00:04:53,080 Jadi sekarang jika kita kembali gelung dan kami mahu menggunakan baris ini sama dalam fail daripada kami, 88 00:04:53,080 --> 00:04:55,970 maka kita tidak akan membaca ia semula tidak perlu. 89 00:04:55,970 --> 00:04:59,310 Jadi benar-benar, baris kebas adalah hanya pengoptimuman. 90 00:04:59,310 --> 00:05:05,500 >> Akhir sekali, kita akan membaca ke dalam berturut-turut semasa lebar RGB lama Pahat, 91 00:05:05,500 --> 00:05:08,040 yang kita mahu dari fail asal. 92 00:05:08,040 --> 00:05:12,270 Jadi sekarang berturut-turut kini mengandungi piksel daripada fail asal yang kita mahu 93 00:05:12,270 --> 00:05:14,200 menulis ke dalam fail keluar. 94 00:05:14,200 --> 00:05:18,960 Jadi sekarang, sama seperti di atas, dan bukannya iterating lebih fail lama, kita perlu 95 00:05:18,960 --> 00:05:22,560 kepada melelar lebih fail baris baru. 96 00:05:22,560 --> 00:05:27,450 Nah di sini, bukan iterating ke atas semua piksel lama yang berturut-turut kini, 97 00:05:27,450 --> 00:05:31,210 kita mahu melelar atas semua piksel dalam fail baru di ini 98 00:05:31,210 --> 00:05:32,480 berturut-turut tertentu. 99 00:05:32,480 --> 00:05:34,140 >> Mengapa kita mahu berbuat demikian? 100 00:05:34,140 --> 00:05:38,960 Kerana kita lihat di sini bahawa kita tidak sebenarnya semestinya menggunakan semua 101 00:05:38,960 --> 00:05:41,020 piksel dalam fail asal. 102 00:05:41,020 --> 00:05:46,630 Kerana jika kita semakin kecil, kita mungkin sebenarnya mahu melangkau piksel. 103 00:05:46,630 --> 00:05:48,090 Dan kita melihat bahawa ini - 104 00:05:48,090 --> 00:05:49,690 x dibahagikan dengan faktor - 105 00:05:49,690 --> 00:05:55,620 erat cermin di sini di mana kita katakan y dibahagikan dengan faktor untuk memikirkan bahawa 106 00:05:55,620 --> 00:06:02,480 barisan ke-y-tua sepadan dengan y-ke-baris dalam fail baru ini. 107 00:06:02,480 --> 00:06:05,880 >> Sekarang kita akan menulis semua ini piksel dari barisan lama 108 00:06:05,880 --> 00:06:07,440 ke dalam barisan baru kami. 109 00:06:07,440 --> 00:06:10,890 Apabila kita melakukan itu, kita hanya perlu meletakkan pelapik di akhir baris kami 110 00:06:10,890 --> 00:06:15,540 dan kita akan kembali gelung dan berterusan selama semua baris dalam fail baru kami. 111 00:06:15,540 --> 00:06:19,390 Pada akhirnya, kita perlu menutup lama kami fail, menutup fail baru kami, dan pulangan 112 00:06:19,390 --> 00:06:21,540 sifar kerana semuanya berjalan baik. 113 00:06:21,540 --> 00:06:24,220 >> Nama saya Rob dan ini adalah Recess. 114 00:06:24,220 --> 00:06:29,184 >> [MUZIK Bermain]