1 00:00:00,000 --> 00:00:00,996 2 00:00:00,996 --> 00:00:12,470 >> [MUSIC CHƠI] 3 00:00:12,470 --> 00:00:13,210 >> ROB Bowden: Hi. 4 00:00:13,210 --> 00:00:16,870 Tôi Rob và để cho kích thước của lên vấn đề này. 5 00:00:16,870 --> 00:00:20,990 Vì vậy, chúng ta sẽ bắt đầu với copy.c như một mẫu, nhưng chúng ta sẽ được 6 00:00:20,990 --> 00:00:23,340 làm cho một vài thay đổi. 7 00:00:23,340 --> 00:00:27,570 >> Bây giờ chúng ta thấy chúng ta đang làm ngay lập tức một thay đổi nơi chúng ta không còn kiểm tra 8 00:00:27,570 --> 00:00:31,560 cho rxc của chúng tôi không bằng 3, nhưng bây giờ chúng tôi đang kiểm tra rc không bằng 4. 9 00:00:31,560 --> 00:00:34,670 Từ khi chúng tôi cũng muốn bao gồm, trong Ngoài các tập tin trong và ngoài file 10 00:00:34,670 --> 00:00:39,550 lập luận, e mà là có được này yếu tố mà chúng tôi đang mở rộng quy mô. 11 00:00:39,550 --> 00:00:45,430 >> Vì vậy, khi chúng tôi chắc chắn về điều đó, chúng tôi muốn sử dụng s quét f để chuyển đổi chuỗi 12 00:00:45,430 --> 00:00:49,030 argv1 nổi một. 13 00:00:49,030 --> 00:00:51,330 Và chúng ta sẽ lưu trữ trong yếu tố. 14 00:00:51,330 --> 00:00:55,180 Ký tự bổ sung này là đảm bảo rằng chúng ta không thực sự nhập 15 00:00:55,180 --> 00:00:59,200 một cái gì đó như 1.4 ABC tại dòng lệnh. 16 00:00:59,200 --> 00:01:02,960 >> Bây giờ chúng ta sẽ tạo ra một số bí danh từ RV2 và RV3 không 17 00:01:02,960 --> 00:01:04,310 tên rất hữu ích. 18 00:01:04,310 --> 00:01:07,660 Chúng ta, thay vào đó, sẽ gọi chúng trong tập tin và ra file. 19 00:01:07,660 --> 00:01:11,580 Bây giờ chúng ta sẽ đảm bảo rằng yếu tố của chúng tôi là thực sự có giá trị. 20 00:01:11,580 --> 00:01:16,330 Vì vậy, nếu yếu tố nhỏ hơn hoặc bằng không hoặc lớn hơn 100, sau đó theo 21 00:01:16,330 --> 00:01:19,660 spec, chúng ta nên từ chối rằng yếu tố. 22 00:01:19,660 --> 00:01:23,890 >> Khi chúng tôi chắc chắn đó là tốt, bây giờ chúng ta có thể mở các tập tin n, và chúng ta phải làm 23 00:01:23,890 --> 00:01:25,950 chắc chắn rằng nó đã được mở thành công. 24 00:01:25,950 --> 00:01:28,630 Nếu không, sẽ trả về null. 25 00:01:28,630 --> 00:01:30,390 Chúng ta sẽ mở file ra. 26 00:01:30,390 --> 00:01:33,420 Và một lần nữa, chúng tôi muốn kiểm tra để chắc chắc chắn rằng nó mở thành công. 27 00:01:33,420 --> 00:01:37,270 Và nếu nó không mở thành công, sau đó chúng tôi cũng cần phải chắc chắn để đóng 28 00:01:37,270 --> 00:01:40,870 các tập tin n mà ban đầu thành công mở ra, hoặc người nào khác chúng ta có một 29 00:01:40,870 --> 00:01:42,600 rò rỉ bộ nhớ. 30 00:01:42,600 --> 00:01:46,350 >> Vì vậy, bây giờ chúng ta sẽ đọc trong bitmap tập tin tiêu đề và thông tin bitmap 31 00:01:46,350 --> 00:01:48,890 tiêu đề từ các tập tin n. 32 00:01:48,890 --> 00:01:52,360 Chúng tôi sẽ đảm bảo rằng các n tập tin là một bitmap hợp lệ. 33 00:01:52,360 --> 00:01:52,640 OK. 34 00:01:52,640 --> 00:01:55,100 >> Vì vậy, bây giờ chúng ta sẽ bắt đầu thực hiện một số thay đổi. 35 00:01:55,100 --> 00:01:58,840 Như vậy bởi vì chúng ta sẽ được thay đổi điều, trước tiên chúng ta muốn nhớ 36 00:01:58,840 --> 00:02:01,510 chiều rộng cũ của tập tin n. 37 00:02:01,510 --> 00:02:05,160 Chúng tôi muốn nhớ đệm cũ của các tập tin bằng cách sử dụng n tính toán tương tự 38 00:02:05,160 --> 00:02:06,990 từ copy.c. 39 00:02:06,990 --> 00:02:09,840 >> Và bây giờ chúng ta sẽ thay đổi các thông tin tiêu đề bitmap. 40 00:02:09,840 --> 00:02:13,630 Và vì vậy chúng tôi nhân cả hai chiều rộng và chiều cao bởi yếu tố từ 41 00:02:13,630 --> 00:02:15,750 đó là những gì chúng tôi đang mở rộng quy mô bằng. 42 00:02:15,750 --> 00:02:18,420 Chúng ta sẽ xác định đệm mới của tập tin bằng cách 43 00:02:18,420 --> 00:02:21,140 bằng cách sử dụng chiều rộng mới. 44 00:02:21,140 --> 00:02:27,330 Và chúng ta sẽ xác định mới kích thước của hình ảnh bằng cách sử dụng số 45 00:02:27,330 --> 00:02:31,610 byte trong một hàng duy nhất mà là có là số lượng điểm ảnh trong dòng đó 46 00:02:31,610 --> 00:02:35,960 lần kích thước của một điểm ảnh cộng với số byte đệm ở cuối 47 00:02:35,960 --> 00:02:40,310 của hàng đó, và tất cả những gì nhân bởi số lượng hàng mà chúng tôi có. 48 00:02:40,310 --> 00:02:43,800 Vì vậy, đó là số lượng các byte chúng tôi có trong dữ liệu hình ảnh của chúng tôi. 49 00:02:43,800 --> 00:02:48,190 >> Bf.Bfsize bây giờ là có được số lượng của byte trong phiên bản beta hình ảnh của chúng tôi cộng 50 00:02:48,190 --> 00:02:49,350 kích thước của tiêu đề của chúng tôi. 51 00:02:49,350 --> 00:02:53,910 Vì vậy, cộng với kích thước của phần đầu tập tin bitmap và kích thước của bitmap thông tin tiêu đề. 52 00:02:53,910 --> 00:02:54,510 OK. 53 00:02:54,510 --> 00:02:56,440 Vì vậy, đó là nó cho tiêu đề của chúng tôi. 54 00:02:56,440 --> 00:02:59,030 Chúng ta có thể viết các tập tin và đầu Thông tin tiêu đề ra của chúng tôi 55 00:02:59,030 --> 00:03:01,590 tập tin, và chúng tôi đang tốt. 56 00:03:01,590 --> 00:03:03,800 >> Bây giờ là lúc để bắt đầu thực sự viết các điểm ảnh 57 00:03:03,800 --> 00:03:05,120 dữ liệu cho các tập tin ra. 58 00:03:05,120 --> 00:03:10,460 Chúng ta sẽ khai báo một bộ đệm kích thước chiều rộng RGB cũ gấp ba, và chúng tôi 59 00:03:10,460 --> 00:03:13,790 sẽ khai báo một biến được gọi là tê hàng, đó là chúng ta sẽ 60 00:03:13,790 --> 00:03:15,640 bước đầu thiết lập bằng âm 1. 61 00:03:15,640 --> 00:03:19,090 Chúng ta sẽ thấy rằng chúng ta sẽ được sử dụng rằng để theo dõi những gì 62 00:03:19,090 --> 00:03:22,640 hàng chúng tôi hiện đã tải vào bộ đệm này. 63 00:03:22,640 --> 00:03:23,290 OK. 64 00:03:23,290 --> 00:03:28,750 >> Vì vậy bây giờ không giống như phiên bản tiêu chuẩn, thay vì lặp lại hơn ở trong 65 00:03:28,750 --> 00:03:32,900 tập tin, chúng ta sẽ lặp qua mỗi hàng trong các tập tin ra ngoài và tìm ra 66 00:03:32,900 --> 00:03:38,130 mà hàng trong các tập tin trong chúng ta muốn đặt trong hàng này trong các tập tin ra. 67 00:03:38,130 --> 00:03:44,930 Vì vậy, lặp lại trên tất cả các hàng trong ra ngoài nộp bằng cách sử dụng tầm cao mới, chúng tôi đầu tiên 68 00:03:44,930 --> 00:03:48,890 sẽ xác định hàng trong cũ nộp chúng ta sẽ sử dụng, mà chúng tôi 69 00:03:48,890 --> 00:03:53,560 sẽ làm gì bằng cách này hiện nay hàng chia cho yếu tố. 70 00:03:53,560 --> 00:03:58,000 Vì vậy, đó sẽ cung cấp cho chúng tôi hàng trong file cũ mà chúng tôi muốn. 71 00:03:58,000 --> 00:04:03,310 >> Vì vậy, bây giờ nếu hàng bị tê liệt không bằng y cũ, chúng ta sẽ phải đọc hàng 72 00:04:03,310 --> 00:04:05,940 mà chúng tôi muốn thành hiện hàng đệm của chúng tôi. 73 00:04:05,940 --> 00:04:07,700 Vì vậy, làm thế nào chúng tôi sẽ làm điều đó? 74 00:04:07,700 --> 00:04:11,650 Đầu tiên, chúng ta sẽ tìm ra vị trí bắt đầu liên tiếp trong 75 00:04:11,650 --> 00:04:13,100 tập tin gốc. 76 00:04:13,100 --> 00:04:18,630 Vì vậy, vị trí đó là có được qua tất cả các tiêu đề của chúng tôi và 77 00:04:18,630 --> 00:04:21,589 bây giờ qua hàng y cũ. 78 00:04:21,589 --> 00:04:23,880 >> Và như vậy có bao nhiêu byte đang ở trong một hàng duy nhất? 79 00:04:23,880 --> 00:04:28,740 Một lần nữa, kích thước của RGB lần ba tuổi chiều rộng cộng với đệm cũ, vì vậy đó là 80 00:04:28,740 --> 00:04:30,640 số byte trong một hàng duy nhất. 81 00:04:30,640 --> 00:04:33,680 Và chúng tôi muốn bỏ qua hàng y cũ qua. 82 00:04:33,680 --> 00:04:37,580 Vì vậy, chúng ta sẽ tìm f và chúng tôi sử dụng tìm kiếm các thiết lập để bắt đầu từ 83 00:04:37,580 --> 00:04:39,100 bắt đầu của một tập tin. 84 00:04:39,100 --> 00:04:42,740 Chúng ta sẽ e tìm cách vị trí này trong tập tin, đặt chúng tôi tại 85 00:04:42,740 --> 00:04:46,500 bắt đầu của hàng chúng tôi muốn đọc vào bộ đệm của chúng tôi. 86 00:04:46,500 --> 00:04:48,510 >> Chúng ta sẽ thiết lập hàng tê bằng y cũ. 87 00:04:48,510 --> 00:04:53,080 Vì vậy, bây giờ nếu chúng ta lặp lại và chúng tôi muốn sử dụng cùng hàng này trong tập tin ra của chúng tôi, 88 00:04:53,080 --> 00:04:55,970 sau đó chúng tôi sẽ không để đọc nó ở lại không cần thiết. 89 00:04:55,970 --> 00:04:59,310 Vì vậy, thực sự, hàng tê là chỉ là một tối ưu hóa. 90 00:04:59,310 --> 00:05:05,500 >> Cuối cùng, chúng ta sẽ đọc vào hàng hiện tại chiều rộng gấp ba RGB cũ 91 00:05:05,500 --> 00:05:08,040 mà chúng tôi muốn từ tập tin gốc. 92 00:05:08,040 --> 00:05:12,270 Vì vậy, bây giờ hàng hiện có chứa các điểm ảnh từ các tập tin ban đầu mà chúng tôi muốn 93 00:05:12,270 --> 00:05:14,200 viết vào tập tin ra. 94 00:05:14,200 --> 00:05:18,960 Vì vậy, bây giờ, giống như ở trên, thay vì duyệt qua tập tin cũ, chúng ta cần 95 00:05:18,960 --> 00:05:22,560 nó để lặp lại các tập tin hàng mới. 96 00:05:22,560 --> 00:05:27,450 Cũng ở đây, thay vì lặp qua tất cả của các điểm ảnh cũ trong hàng hiện, 97 00:05:27,450 --> 00:05:31,210 chúng tôi muốn lặp qua tất cả các điểm ảnh trong tập tin mới của chúng tôi trong này 98 00:05:31,210 --> 00:05:32,480 hàng cụ thể. 99 00:05:32,480 --> 00:05:34,140 >> Tại sao chúng ta muốn làm điều đó? 100 00:05:34,140 --> 00:05:38,960 Bởi vì chúng ta thấy ở đây là chúng ta không thực sự nhất thiết phải sử dụng tất cả các 101 00:05:38,960 --> 00:05:41,020 điểm ảnh trong file gốc. 102 00:05:41,020 --> 00:05:46,630 Bởi vì nếu chúng ta thu hẹp lại, chúng ta có thể thực sự muốn bỏ qua các điểm ảnh. 103 00:05:46,630 --> 00:05:48,090 Và chúng tôi thấy rằng điều này - 104 00:05:48,090 --> 00:05:49,690 x chia cho yếu tố - 105 00:05:49,690 --> 00:05:55,620 phản ánh gần lên ở đây, nơi chúng ta nói y chia yếu tố để tìm ra rằng 106 00:05:55,620 --> 00:06:02,480 hàng y thứ cũ tương ứng với hàng y thứ trong tập tin mới này. 107 00:06:02,480 --> 00:06:05,880 >> Bây giờ chúng ta sẽ viết tất cả các các điểm ảnh từ hàng cũ 108 00:06:05,880 --> 00:06:07,440 vào hàng mới của chúng tôi. 109 00:06:07,440 --> 00:06:10,890 Khi chúng tôi đã làm điều đó, chúng ta cần phải chỉ đặt đệm ở cuối hàng của chúng tôi 110 00:06:10,890 --> 00:06:15,540 và chúng ta sẽ lặp lại và tiếp tục cho tất cả các hàng trong tập tin mới của chúng tôi. 111 00:06:15,540 --> 00:06:19,390 Cuối cùng, chúng ta cần phải đóng cũ của chúng tôi nộp, đóng tập tin mới của chúng tôi, và trở lại 112 00:06:19,390 --> 00:06:21,540 bằng không bởi vì tất cả mọi thứ diễn ra tốt đẹp. 113 00:06:21,540 --> 00:06:24,220 >> Tên tôi là Rob và điều này đã ngừng họp. 114 00:06:24,220 --> 00:06:29,184 >> [MUSIC CHƠI]