1 00:00:00,000 --> 00:00:00,996 2 00:00:00,996 --> 00:00:12,470 >> [音乐播放] 3 00:00:12,470 --> 00:00:13,210 >> ROB BOWDEN:你好。 4 00:00:13,210 --> 00:00:16,870 我抢,让大小 了这个问题。 5 00:00:16,870 --> 00:00:20,990 所以,我们要开始copy.c为 一个模板,但我们要成为 6 00:00:20,990 --> 00:00:23,340 使得相当多的变化。 7 00:00:23,340 --> 00:00:27,570 >> 现在我们看到,我们会立即作出 改变的地方我们不再检查 8 00:00:27,570 --> 00:00:31,560 我们RXC不等于3,但现在 我们正在检查RC不等于4。 9 00:00:31,560 --> 00:00:34,670 因为我们也希望包括在 除了在文件和签出文件 10 00:00:34,670 --> 00:00:39,550 参数,F这将是这 因素,使我们正在扩展。 11 00:00:39,550 --> 00:00:45,430 >> 所以一旦我们确定的是,我们要 用s扫描f,将字符串转换 12 00:00:45,430 --> 00:00:49,030 argv1为float。 13 00:00:49,030 --> 00:00:51,330 而我们将要存储 在因素。 14 00:00:51,330 --> 00:00:55,180 这种额外的字符是确保 我们实际上并没有进入 15 00:00:55,180 --> 00:00:59,200 像1.4 ABC 在命令行中。 16 00:00:59,200 --> 00:01:02,960 >> 现在,我们要创建一些别名 因为RV2和RV3不 17 00:01:02,960 --> 00:01:04,310 非常有帮助的名字。 18 00:01:04,310 --> 00:01:07,660 我们,而是要打电话 他们在文件和出文件。 19 00:01:07,660 --> 00:01:11,580 现在,我们要确保 我们的因素是实际有效的。 20 00:01:11,580 --> 00:01:16,330 因此,如果因子是小于或等于 零或大于100,则按照 21 00:01:16,330 --> 00:01:19,660 规范,我们应该拒绝 这个因素。 22 00:01:19,660 --> 00:01:23,890 >> 当我们确定它的好,现在我们可以 打开n个文件,我们必须做出 23 00:01:23,890 --> 00:01:25,950 确保它被成功打开。 24 00:01:25,950 --> 00:01:28,630 如果没有,那将返回null。 25 00:01:28,630 --> 00:01:30,390 我们要开出的文件。 26 00:01:30,390 --> 00:01:33,420 再次,我们要进行检查,以 确保它的成功开业。 27 00:01:33,420 --> 00:01:37,270 如果它没有成功打开,然后 我们还需要确保关闭 28 00:01:37,270 --> 00:01:40,870 n个文件,该文件最初成功 打开,否则我们有一个 29 00:01:40,870 --> 00:01:42,600 内存泄漏。 30 00:01:42,600 --> 00:01:46,350 >> 所以,现在我们要读取的位图 文件头和位图信息 31 00:01:46,350 --> 00:01:48,890 从n个文件头。 32 00:01:48,890 --> 00:01:52,360 我们将确保该 n文件是一个有效的位图。 33 00:01:52,360 --> 00:01:52,640 确定。 34 00:01:52,640 --> 00:01:55,100 >> 所以,现在我们要开始 做一些改变。 35 00:01:55,100 --> 00:01:58,840 所以,因为我们将要改变 的东西,我们首先要记住的 36 00:01:58,840 --> 00:02:01,510 老宽度n个文件。 37 00:02:01,510 --> 00:02:05,160 我们要记住的老填充 以同样方法计算n个文件 38 00:02:05,160 --> 00:02:06,990 从copy.c. 39 00:02:06,990 --> 00:02:09,840 >> 现在我们要改变 位图信息头。 40 00:02:09,840 --> 00:02:13,630 所以我们既乘以宽度 而且由于采用因子高度 41 00:02:13,630 --> 00:02:15,750 这就是我们扩展了。 42 00:02:15,750 --> 00:02:18,420 我们将确定 通过该文件的新填充 43 00:02:18,420 --> 00:02:21,140 使用新的宽度。 44 00:02:21,140 --> 00:02:27,330 而且我们要确定新 使用的数量的图像的大小 45 00:02:27,330 --> 00:02:31,610 在其中将要单列字节 是在该行中的像素的数目 46 00:02:31,610 --> 00:02:35,960 一个像素的次大小加上 填充字节在最后数 47 00:02:35,960 --> 00:02:40,310 该行,并乘以所有 通过我们有行数。 48 00:02:40,310 --> 00:02:43,800 所以这是字节数 我们在我们的图像数据。 49 00:02:43,800 --> 00:02:48,190 >> Bf.Bfsize现在将是数 在我们的形象公测字节加上 50 00:02:48,190 --> 00:02:49,350 我们的头的大小。 51 00:02:49,350 --> 00:02:53,910 位图文件头,这样加上大小 和位图信息头的大小。 52 00:02:53,910 --> 00:02:54,510 确定。 53 00:02:54,510 --> 00:02:56,440 所以这是它为我们的头。 54 00:02:56,440 --> 00:02:59,030 我们可以写入文件头和 信息标题给我们出 55 00:02:59,030 --> 00:03:01,590 文件,我们是很好的。 56 00:03:01,590 --> 00:03:03,800 >> 现在是时候开始实际 写像素 57 00:03:03,800 --> 00:03:05,120 数据到输出文件中。 58 00:03:05,120 --> 00:03:10,460 我们要声明大小的缓冲区 老宽的RGB三元组,我们很 59 00:03:10,460 --> 00:03:13,790 要声明一个变量叫 排麻木了,这是我们要 60 00:03:13,790 --> 00:03:15,640 初始设定为等于负1。 61 00:03:15,640 --> 00:03:19,090 我们会看到,我们将使用 即,为了保持什么轨道 62 00:03:19,090 --> 00:03:22,640 我们目前已经加载的行 到此缓冲区中。 63 00:03:22,640 --> 00:03:23,290 确定。 64 00:03:23,290 --> 00:03:28,750 >> 所以现在不像标准版, 而不是迭代的中 65 00:03:28,750 --> 00:03:32,900 文件中,我们将遍历每个 行中的out文件,并找出 66 00:03:32,900 --> 00:03:38,130 我们希望它在文件中的行 把这个排在了所有的文件。 67 00:03:38,130 --> 00:03:44,930 所以遍历所有行中的列 使用新的高度文件,我们首先 68 00:03:44,930 --> 00:03:48,890 要确定在旧的行 文件中,我们要使用,这我们 69 00:03:48,890 --> 00:03:53,560 要做到通过采取这种电流 排除以系数。 70 00:03:53,560 --> 00:03:58,000 所以,那将会给我们的行 在我们想要的旧文件。 71 00:03:58,000 --> 00:04:03,310 >> 所以,现在如果排麻木不等于老Y, 我们将要读的行 72 00:04:03,310 --> 00:04:05,940 我们希望为我们的当前行缓冲区。 73 00:04:05,940 --> 00:04:07,700 那么我们如何做到这一点? 74 00:04:07,700 --> 00:04:11,650 首先,我们要弄清楚 开头的那行的位置 75 00:04:11,650 --> 00:04:13,100 原始文件。 76 00:04:13,100 --> 00:04:18,630 所以该位置将是 过去我们所有的头文件和 77 00:04:18,630 --> 00:04:21,589 现在过去老y行。 78 00:04:21,589 --> 00:04:23,880 >> 所以多少字节 在单个行? 79 00:04:23,880 --> 00:04:28,740 同样,RGB的大小三旧时代 宽度加上旧的填充,所以这是 80 00:04:28,740 --> 00:04:30,640 在单行中的字节数。 81 00:04:30,640 --> 00:04:33,680 我们要跳过老y行。 82 00:04:33,680 --> 00:04:37,580 所以我们要到f寻求和我们 用seek设置为从一开始 83 00:04:37,580 --> 00:04:39,100 开头的文件。 84 00:04:39,100 --> 00:04:42,740 我们打​​算到f寻求这个位置 在文件中,把我们的 85 00:04:42,740 --> 00:04:46,500 开始我们想要的行 阅读到我们的缓冲区。 86 00:04:46,500 --> 00:04:48,510 >> 我们要设置的行 麻木等于旧年。 87 00:04:48,510 --> 00:04:53,080 所以,现在如果我们回圈,我们希望 使用我们出文件中的此同一行, 88 00:04:53,080 --> 00:04:55,970 那么我们不会阅读 它再一次不必要的。 89 00:04:55,970 --> 00:04:59,310 所以真的,行的是麻木 只是一个优化。 90 00:04:59,310 --> 00:05:05,500 >> 最后,我们要读入 当前行老宽​​度RGB三元组 91 00:05:05,500 --> 00:05:08,040 我们希望从原始文件。 92 00:05:08,040 --> 00:05:12,270 所以现在当前行中包含的像素从 我们要原始文件 93 00:05:12,270 --> 00:05:14,200 写入到输出文件中。 94 00:05:14,200 --> 00:05:18,960 所以,现在,就像上面的,而不是 遍历旧文件,我们需要 95 00:05:18,960 --> 00:05:22,560 它遍历新的文件行。 96 00:05:22,560 --> 00:05:27,450 而不是遍历那么这里,所有的 老像素,在当前行, 97 00:05:27,450 --> 00:05:31,210 我们要遍历所有的 在我们这个新的文件像素 98 00:05:31,210 --> 00:05:32,480 特定的行。 99 00:05:32,480 --> 00:05:34,140 >> 我们为什么要那么做? 100 00:05:34,140 --> 00:05:38,960 因为我们在这里看到,我们不是 其实不一定使用所有的 101 00:05:38,960 --> 00:05:41,020 像素中的原始文件。 102 00:05:41,020 --> 00:05:46,630 因为如果我们要萎缩,我们可能 其实想跳过的像素。 103 00:05:46,630 --> 00:05:48,090 而且我们看到,这一点 - 104 00:05:48,090 --> 00:05:49,690 x除以系数划分 - 105 00:05:49,690 --> 00:05:55,620 密切反映在这里,我们说ÿ 通过因子分为弄清楚, 106 00:05:55,620 --> 00:06:02,480 老Y-th行对应于 第y行的这个新文件。 107 00:06:02,480 --> 00:06:05,880 >> 现在,我们将要编写所有 从旧行这些像素 108 00:06:05,880 --> 00:06:07,440 进入我们的新行。 109 00:06:07,440 --> 00:06:10,890 一旦我们做到了这一点,我们需要公正 把填充在我们行的结尾 110 00:06:10,890 --> 00:06:15,540 我们会回送和持续 所有在我们的新文件中的行。 111 00:06:15,540 --> 00:06:19,390 最后,我们需要关闭我们的老 文件,关闭我们的新文件,并交回 112 00:06:19,390 --> 00:06:21,540 零,因为一切正常。 113 00:06:21,540 --> 00:06:24,220 >> 我的名字是罗布,这是课间休息。 114 00:06:24,220 --> 00:06:29,184 >> [音乐播放]