WEBVTT 00:00:01.140 --> 00:00:03.820 像素简介 NOTE Paragraph 00:00:09.390 --> 00:00:10.140 (按快门声)赞! NOTE Paragraph 00:00:11.990 --> 00:00:14.809 我和Mike一起成立了Instagram NOTE Paragraph 00:00:14.899 --> 00:00:18.820 我们开始只是想用手机照片做些有新意的事儿 NOTE Paragraph 00:00:18.930 --> 00:00:22.149 毕竟这是人们第一次那么在意口袋里的计算机 00:00:23.009 --> 00:00:27.270 我们认为在未来五年照片分享可能是最大的机会 00:00:27.270 --> 00:00:31.730 于是我们顺从内心,开始花时间来做这件事 00:00:32.580 --> 00:00:36.030 有app或者想法去解决x, y, z还不够 00:00:36.050 --> 00:00:39.240 更重要的是解决实际问题,供人们真正的使用 00:00:40.090 --> 00:00:41.610 问题是:你要解决什么问题? 00:00:44.720 --> 00:00:50.579 最初为了在屏幕上显示照片,人们需要对照片进行数据分解 00:00:51.299 --> 00:00:54.910 1957年,一名计算机工程师Russell Kirsch 00:00:54.910 --> 00:00:57.030 给他儿子拍了一张照片并扫描了下来 00:00:57.030 --> 00:01:01.050 这是第一张数字图像:有颗粒感的黑白婴儿照 00:01:01.060 --> 00:01:02.699 像素就这样诞生了 00:01:02.699 --> 00:01:07.320 像素是个有趣的概念,因为他们不容易被看到 00:01:08.380 --> 00:01:13.520 但实际上,如果你不断放大显示屏 00:01:13.520 --> 00:01:16.910 就会发现显示屏是由非常小的光点组成 00:01:16.910 --> 00:01:22.619 更有意思的是,每一个小光点是由更小的不同颜色光点构成 00:01:22.619 --> 00:01:24.050 光点颜色有红,绿,蓝 00:01:24.900 --> 00:01:27.700 从远处看,这些像素构成了图像 00:01:27.700 --> 00:01:31.200 从前面看,他们只是能够亮暗的光点 00:01:31.200 --> 00:01:36.349 正是他们构成了我们每天从电脑上看到的照片 00:01:36.349 --> 00:01:39.669 你总能听到一个词:分辨率 00:01:39.669 --> 00:01:43.259 计算机科学家和器材生产商都会提到它 00:01:43.259 --> 00:01:51.039 分辨率是一个二维值,用于表示屏幕上像素数 00:01:51.039 --> 00:01:54.399 当我还是个高中生的时候,分辨率只有640 x 480 00:01:54.399 --> 00:01:56.729 今天分辨率则大了很多 00:01:56.729 --> 00:01:59.600 除了分辨率以外,密度也很重要 00:01:59.600 --> 00:02:04.140 比如智能手机,在有相同像素的前提下 00:02:04.140 --> 00:02:07.970 像素密度更大的图像就更可以更细腻 00:02:07.970 --> 00:02:12.550 那么,如何在一个文件里存储这些像素值呢? 00:02:12.550 --> 00:02:18.760 其实你只是存储了许多红绿蓝的三元数组 NOTE Paragraph 00:02:18.760 --> 00:02:21.060 他们则表示每一个像素 00:02:22.200 --> 00:02:26.410 像素的数值范围是0-255 00:02:27.200 --> 00:02:31.050 0非常暗,255非常亮 00:02:31.200 --> 00:02:35.350 这个三元数值一起表示一个像素 00:02:37.600 --> 00:02:41.690 一个图像文件,无论是JPEG,GIF 还是PNG 00:02:41.690 --> 00:02:43.460 包含了百万级的红绿蓝三元值 00:02:44.700 --> 00:02:46.510 那么计算机是如何存储这些数据的呢? 00:02:46.510 --> 00:02:49.740 所有视觉和计算数据是用bit(比特)表征 00:02:49.740 --> 00:02:52.280 每bit有两个状态:开和关 00:02:52.280 --> 00:02:57.240 计算机使用对应的1或0二元值 00:02:57.240 --> 00:03:00.900 所以图像是由一堆01数值构成的 00:03:00.900 --> 00:03:05.460 为什么RGB数值的范围是0到255呢? 00:03:05.470 --> 00:03:09.360 每一个颜色频道是由8bit构成 00:03:09.360 --> 00:03:12.520 8bit构成一个1BYTE(字节) 00:03:12.520 --> 00:03:14.210 如果你了解二元数值系统 00:03:14.210 --> 00:03:19.710 那么8bit最大的数值是255,也就是一行全是1 00:03:20.810 --> 00:03:23.900 最小的8bit数值是0,也就是一行全是0 00:03:23.900 --> 00:03:30.780 因此0到255对应了每个颜色通道里256个灰度值 00:03:33.180 --> 00:03:37.480 比如我们来表示青绿色的像素 00:03:37.480 --> 00:03:40.880 在传统的十进制数值系统里,64有些红 00:03:40.880 --> 00:03:44.870 224很绿,208比较蓝 00:03:45.330 --> 00:03:50.710 但是计算机会青绿色存储成01000000 00:03:51.330 --> 00:03:53.910 11100000 00:03:53.920 --> 00:03:56.770 11010000 00:03:57.330 --> 00:04:00.810 我们使用24个二进制值表示一个像素 00:04:02.070 --> 00:04:07.050 计算机系统通常使用16进制,而不是二进制来表示颜色 00:04:07.350 --> 00:04:14.800 所以我们只用6个十六进制表示同样的颜色:40 E0 D0 00:04:14.800 --> 00:04:16.179 这就短多了 00:04:16.179 --> 00:04:22.559 如果你想改变图像颜色,怎么办? 00:04:22.559 --> 00:04:31.339 使用对应函数,输入为像素的红蓝绿数值 00:04:31.339 --> 00:04:35.889 然后将其对应成新的红蓝绿数值 00:04:35.889 --> 00:04:39.220 比如你想将图像变暗 00:04:39.220 --> 00:04:48.459 一种方法是用输入的红绿蓝数值减去50 00:04:49.529 --> 00:04:54.870 很明显,结果不能小于0,然后得到数值 00:04:54.870 --> 00:05:01.499 如果输入是RGB,那么输出是R-50,G-50,B-50 00:05:01.499 --> 00:05:06.419 你能看到输入图像是某个亮度,输出图像就变暗许多 00:05:08.099 --> 00:05:13.779 许多人可能没有意识到,Instagram不止是做图像滤镜 00:05:13.779 --> 00:05:17.549 或者仅仅把图片变酷 00:05:18.529 --> 00:05:20.730 他的愿景更加重要 00:05:20.730 --> 00:05:23.010 那就是如何将人们联系起来 00:05:23.010 --> 00:05:30.320 他也不只是看朋友家人的照片,我们希望看到世界的变化 00:05:30.320 --> 00:05:33.950 可能在海外,可能是社会活动 00:05:33.950 --> 00:05:37.000 你可以通过视觉图片的方式获知这些信息 00:05:37.000 --> 00:05:44.010 这才是我们快速成长并成为受欢迎媒介的原因 00:05:44.010 --> 00:05:45.969 学习更多尽在studio.code.org