Image Code (9 mins)
-
0:01 - 0:06在本节,我们要将之前讲过的代码概念
-
0:06 - 0:12和图像、像素和 RGB 值的概念结合起来
-
0:12 - 0:17本节的实例中,我们一次只研究一个像素
-
0:17 - 0:22下一节中,我们会将数量增大,一次研究上万个像素
-
0:22 - 0:27开始之前,我想要看看这个名为 x.png 的图像
-
0:27 - 0:33这个图像非常小,是10×10的图像,在这页的这个地方
-
0:33 - 0:38它是一个黑色的图像,上面有个白色的 x
-
0:38 - 0:44图像非常小,我们稍后会将它放大
-
0:44 - 0:49png 是一种图像格式,叫便携式网络图像格式
-
0:49 - 0:55jpeg 可能是你比较熟悉的一种图像格式,这两个都是图像格式
-
0:55 - 1:01我要看的是这里,这里有一些代码,加载并显示 x.png 图像
-
1:01 - 1:06这是第一个、非常简单的图像处理代码实例
-
1:06 - 1:10代码在这里,我讲一下每一行的内容
-
1:10 - 1:14第一行:image = new SimpleImage("x.png");
-
1:15 - 1:19这行代码的意思是右边的代码将 x.png 图像加载到存储器中
-
1:19 - 1:24我们以后会讨论什么是存储器
-
1:24 - 1:28图像载入计算机后,计算机就可以处理图像了
-
1:28 - 1:33加载图像后,这里的等号就是
-
1:33 - 1:37把图像存储在变量里,我将变量命名为 image.setZoom(20)
-
1:37 - 1:41这个变量和我们前面讲的变量是一样的
第二行:image.setZoom(20) -
1:41 - 1:46它调用图像所带的 setZoom 函数,传递数字20
-
1:46 - 1:52这行代码的作用是设定选项,用于显示20倍的图像
-
1:52 - 1:57对于这么小的图像
-
1:57 - 2:01用这种方法来将它放大,我们就可以看得到
-
2:01 - 2:04最后,print(image)和以前讲的非常相似,就是在右边输出图像
-
2:04 - 2:07跟输出字符串和数字一样
-
2:07 - 2:12我们来试一下。运行后,你看到这里显示 x.png 这个图像
-
2:12 - 2:17其实你可以数出来,1,2,3,4
-
2:17 - 2:22你可以将像素数出来,是10像素×10像素
-
2:22 - 2:27在这里显示的是20倍大
-
2:27 - 2:32将数字改成10,再次运行
-
2:32 - 2:35改成40,运行,图像就大了许多
-
2:35 - 2:40这只是代码的第一个实例
-
2:40 - 2:45继续往下学,我们就可以加载和处理图像
-
2:45 - 2:50再来做一点更有趣的事情。我要扩展代码,从而可以处理单个像素
-
2:50 - 2:55我在程序中间加两行代码
-
2:55 - 2:59这一行是 pixel = image.getPixel(0,0)
-
2:59 - 3:04这行代码的作用是根据我们在这里指定的 x y 坐标
-
3:04 - 3:10在图像中获取某个像素点,0,0指向是左上角的像素点
-
3:10 - 3:15所以它获取左上角的像素点,并将其存储到变量
-
3:15 - 3:20这行是 pixel.setRed(255)
-
3:20 - 3:26这行代码调用 setRed 函数
-
3:26 - 3:31setRed的作用是获取括号里面的数值
-
3:31 - 3:36将该数值设为像素的红色值,运行一下,看结果如何
-
3:36 - 3:42结果是代码获取左上角这个原本是黑色的像素点
-
3:42 - 3:46要记得每个像素有三个值,红绿蓝
-
3:46 - 3:52这行代码访问红色值
-
3:52 - 3:56将其改成255,就是覆盖原来的数值
-
3:56 - 4:02所以我们看到这个像素点是红色的
-
4:02 - 4:08setRed 改变红色值,有类似的函数 setGreen 和 setBlue
-
4:08 - 4:13就有三个函数 setRed,setGreen 和setBlue
-
4:13 - 4:18有这些函数,就可以任意改变红绿蓝的值
-
4:18 - 4:22这里我提一下附加材料
-
4:22 - 4:25我刚介绍了三种函数
-
4:25 - 4:29Image functions reference (图像函数参考)是独立的页面,用一个表列出所有函数
-
4:29 - 4:33在以后的练习中,假如你要知道函数的作用,就可以作为参考
-
4:33 - 4:37但在我的讲课中,我就只用一部分函数
-
4:37 - 4:40下面我要演示这些函数的作用
-
4:40 - 4:44我们来看一些实例
-
4:44 - 4:48就是用函数执行一些任务
-
4:48 - 4:52实例的格式是这个小代码框里有一些初始代码
-
4:52 - 4:56下面的表格列出一些难题
-
4:56 - 5:00如设置绿色、黄色等,我们逐个来分析
-
5:00 - 5:04表格的右边都有一个小小的显示按钮
-
5:04 - 5:08你可以点击按钮,查看解答代码
-
5:08 - 5:12稍后你可以自己访问这页,亲自试一下我演示过的实验,或做点修改
-
5:12 - 5:15我们来试第一个
-
5:15 - 5:19我运行代码,看代码做什么
-
5:19 - 5:24现在,代码只是获取0,0像素点,改成红色,是之前讲过的
-
5:24 - 5:29看看第一个问题,将0,0像素点设为绿色
-
5:29 - 5:34这个表格是用英文的,它的意思是
-
5:34 - 5:39你要根据我们已经学过的步骤来达到某些效果
-
5:39 - 5:44就函数调用和数值而言,代码框里应该写些什么
-
5:44 - 5:49我们要进行什么运算来取得想要的效果
-
5:49 - 5:54基本上,你是把英语转换成计算机的语言
-
5:54 - 5:59这个例子是要设绿色,我要做的不是调用 serRed 函数
-
5:59 - 6:04而是将它改成调用 setGreen 函数。我们来试试看,是成功的
-
6:04 - 6:09有了绿色的像素点。试试下一个例子
-
6:09 - 6:15下一个例子说要将像素 (0,0) 设成黄色。
-
6:15 - 6:21要让像素变成黄色,我要将红色值和绿色值设成255
-
6:21 - 6:26黄色等于红色加绿色,我将红色和绿色都改变
-
6:26 - 6:30复制这行,然后贴到这里
-
6:30 - 6:34将这里改成红色。我的根据是一旦可以获取像素点
-
6:34 - 6:38我就可以对像素点做几样事情。因此,在第一行,我调用了 setRed,改变红色值
-
6:38 - 6:42接着我可以调用下一行的 setGreen 来改变绿色
-
6:42 - 6:46代码会完成每一步
-
6:46 - 6:51我们试试看。果然,是黄色
-
6:51 - 6:54这其实是回到以前的概念,这有一个像素点
-
6:54 - 6:59该像素点有三个值,我逐行写代码,在计算机里改变这些值
-
6:59 - 7:04我们试试下一个,将像素 1,0 改成黄色
-
7:04 - 7:10这个像素在哪里呢?回到这一行,pixel = image.getPixel(0,0)
-
7:10 - 7:15我还没有改这一行
-
7:15 - 7:20不管这里设的是什么值,如0,0,都只是用来识别不同像素而已
-
7:20 - 7:25如果说1,0,就是获取x=1和y=0的像素
-
7:25 - 7:29习惯是先x后y
-
7:29 - 7:34运行来看看。我们看到的是往右移了一个
-
7:34 - 7:39所以我们可以在这里设定任何值
-
7:39 - 7:43譬如2,4,看看运行的结果,很显然像素在这里
-
7:43 - 7:47这回到我们几节前的内容
-
7:47 - 7:52这是x=0,这是x=1,这是x=2
-
7:52 - 7:56我们不去细看不同x和y值的结果了
-
7:56 - 8:00我们只要知道以下这点就可以了,即使有一百万个像素点
-
8:00 - 8:05我们都可以用特定的x值和y值来设定每个像素点
-
8:05 - 8:14好,这里要将像素0,0设成白色,将这里改回像素0,0
-
8:14 - 8:23我要如何处理红绿蓝来产生白色呢
-
8:23 - 8:30答案是将三个值都设成255,请注意,不用重新输入像素
-
8:30 - 8:35我发现复制现有的像素,再进行修改,通常会容易一些
-
8:35 - 8:39我在这里设置第三个函数
-
8:39 - 8:44pixel.setBlue(255),看看这三个的结果
-
8:44 - 8:47果然,设成了白色,我将三个值都设成了255
-
8:47 - 8:51这里还有一些问题,我就不解答了
-
8:51 - 8:55但如果你想的话,可以到这个页面
-
8:55 - 8:59试一下任何数值
-
8:59 - 9:03你理解了这些内容后,我们就可以做一些练习
- Title:
- Image Code (9 mins)
- Video Language:
- English
lovetranslation edited Chinese, Simplified subtitles for Image Code | ||
lovetranslation edited Chinese, Simplified subtitles for Image Code | ||
lovetranslation edited Chinese, Simplified subtitles for Image Code | ||
lovetranslation edited Chinese, Simplified subtitles for Image Code | ||
lovetranslation edited Chinese, Simplified subtitles for Image Code | ||
lovetranslation edited Chinese, Simplified subtitles for Image Code | ||
lovetranslation edited Chinese, Simplified subtitles for Image Code | ||
lovetranslation edited Chinese, Simplified subtitles for Image Code |