1 00:00:01,140 --> 00:00:03,820 像素简介 2 00:00:09,390 --> 00:00:10,140 (按快门声)赞! 3 00:00:11,990 --> 00:00:14,809 我和Mike一起成立了Instagram 4 00:00:14,899 --> 00:00:18,820 我们开始只是想用手机照片做些有新意的事儿 5 00:00:18,930 --> 00:00:22,149 毕竟这是人们第一次那么在意口袋里的计算机 6 00:00:23,009 --> 00:00:27,270 我们认为在未来五年照片分享可能是最大的机会 7 00:00:27,270 --> 00:00:31,730 于是我们顺从内心,开始花时间来做这件事 8 00:00:32,580 --> 00:00:36,030 有app或者想法去解决x, y, z还不够 9 00:00:36,050 --> 00:00:39,240 更重要的是解决实际问题,供人们真正的使用 10 00:00:40,090 --> 00:00:41,610 问题是:你要解决什么问题? 11 00:00:44,720 --> 00:00:50,579 最初为了在屏幕上显示照片,人们需要对照片进行数据分解 12 00:00:51,299 --> 00:00:54,910 1957年,一名计算机工程师Russell Kirsch 13 00:00:54,910 --> 00:00:57,030 给他儿子拍了一张照片并扫描了下来 14 00:00:57,030 --> 00:01:01,050 这是第一张数字图像:有颗粒感的黑白婴儿照 15 00:01:01,060 --> 00:01:02,699 像素就这样诞生了 16 00:01:02,699 --> 00:01:07,320 像素是个有趣的概念,因为他们不容易被看到 17 00:01:08,380 --> 00:01:13,520 但实际上,如果你不断放大显示屏 18 00:01:13,520 --> 00:01:16,910 就会发现显示屏是由非常小的光点组成 19 00:01:16,910 --> 00:01:22,619 更有意思的是,每一个小光点是由更小的不同颜色光点构成 20 00:01:22,619 --> 00:01:24,050 光点颜色有红,绿,蓝 21 00:01:24,900 --> 00:01:27,700 从远处看,这些像素构成了图像 22 00:01:27,700 --> 00:01:31,200 从前面看,他们只是能够亮暗的光点 23 00:01:31,200 --> 00:01:36,349 正是他们构成了我们每天从电脑上看到的照片 24 00:01:36,349 --> 00:01:39,669 你总能听到一个词:分辨率 25 00:01:39,669 --> 00:01:43,259 计算机科学家和器材生产商都会提到它 26 00:01:43,259 --> 00:01:51,039 分辨率是一个二维值,用于表示屏幕上像素数 27 00:01:51,039 --> 00:01:54,399 当我还是个高中生的时候,分辨率只有640 x 480 28 00:01:54,399 --> 00:01:56,729 今天分辨率则大了很多 29 00:01:56,729 --> 00:01:59,600 除了分辨率以外,密度也很重要 30 00:01:59,600 --> 00:02:04,140 比如智能手机,在有相同像素的前提下 31 00:02:04,140 --> 00:02:07,970 像素密度更大的图像就更可以更细腻 32 00:02:07,970 --> 00:02:12,550 那么,如何在一个文件里存储这些像素值呢? 33 00:02:12,550 --> 00:02:18,760 其实你只是存储了许多红绿蓝的三元数组 34 00:02:18,760 --> 00:02:21,060 他们则表示每一个像素 35 00:02:22,200 --> 00:02:26,410 像素的数值范围是0-255 36 00:02:27,200 --> 00:02:31,050 0非常暗,255非常亮 37 00:02:31,200 --> 00:02:35,350 这个三元数值一起表示一个像素 38 00:02:37,600 --> 00:02:41,690 一个图像文件,无论是JPEG,GIF 还是PNG 39 00:02:41,690 --> 00:02:43,460 包含了百万级的红绿蓝三元值 40 00:02:44,700 --> 00:02:46,510 那么计算机是如何存储这些数据的呢? 41 00:02:46,510 --> 00:02:49,740 所有视觉和计算数据是用bit(比特)表征 42 00:02:49,740 --> 00:02:52,280 每bit有两个状态:开和关 43 00:02:52,280 --> 00:02:57,240 计算机使用对应的1或0二元值 44 00:02:57,240 --> 00:03:00,900 所以图像是由一堆01数值构成的 45 00:03:00,900 --> 00:03:05,460 为什么RGB数值的范围是0到255呢? 46 00:03:05,470 --> 00:03:09,360 每一个颜色频道是由8bit构成 47 00:03:09,360 --> 00:03:12,520 8bit构成一个1BYTE(字节) 48 00:03:12,520 --> 00:03:14,210 如果你了解二元数值系统 49 00:03:14,210 --> 00:03:19,710 那么8bit最大的数值是255,也就是一行全是1 50 00:03:20,810 --> 00:03:23,900 最小的8bit数值是0,也就是一行全是0 51 00:03:23,900 --> 00:03:30,780 因此0到255对应了每个颜色通道里256个灰度值 52 00:03:33,180 --> 00:03:37,480 比如我们来表示青绿色的像素 53 00:03:37,480 --> 00:03:40,880 在传统的十进制数值系统里,64有些红 54 00:03:40,880 --> 00:03:44,870 224很绿,208比较蓝 55 00:03:45,330 --> 00:03:50,710 但是计算机会青绿色存储成01000000 56 00:03:51,330 --> 00:03:53,910 11100000 57 00:03:53,920 --> 00:03:56,770 11010000 58 00:03:57,330 --> 00:04:00,810 我们使用24个二进制值表示一个像素 59 00:04:02,070 --> 00:04:07,050 计算机系统通常使用16进制,而不是二进制来表示颜色 60 00:04:07,350 --> 00:04:14,800 所以我们只用6个十六进制表示同样的颜色:40 E0 D0 61 00:04:14,800 --> 00:04:16,179 这就短多了 62 00:04:16,179 --> 00:04:22,559 如果你想改变图像颜色,怎么办? 63 00:04:22,559 --> 00:04:31,339 使用对应函数,输入为像素的红蓝绿数值 64 00:04:31,339 --> 00:04:35,889 然后将其对应成新的红蓝绿数值 65 00:04:35,889 --> 00:04:39,220 比如你想将图像变暗 66 00:04:39,220 --> 00:04:48,459 一种方法是用输入的红绿蓝数值减去50 67 00:04:49,529 --> 00:04:54,870 很明显,结果不能小于0,然后得到数值 68 00:04:54,870 --> 00:05:01,499 如果输入是RGB,那么输出是R-50,G-50,B-50 69 00:05:01,499 --> 00:05:06,419 你能看到输入图像是某个亮度,输出图像就变暗许多 70 00:05:08,099 --> 00:05:13,779 许多人可能没有意识到,Instagram不止是做图像滤镜 71 00:05:13,779 --> 00:05:17,549 或者仅仅把图片变酷 72 00:05:18,529 --> 00:05:20,730 他的愿景更加重要 73 00:05:20,730 --> 00:05:23,010 那就是如何将人们联系起来 74 00:05:23,010 --> 00:05:30,320 他也不只是看朋友家人的照片,我们希望看到世界的变化 75 00:05:30,320 --> 00:05:33,950 可能在海外,可能是社会活动 76 00:05:33,950 --> 00:05:37,000 你可以通过视觉图片的方式获知这些信息 77 00:05:37,000 --> 00:05:44,010 这才是我们快速成长并成为受欢迎媒介的原因 78 00:05:44,010 --> 00:05:45,969 学习更多尽在studio.code.org