其他
用40年前的电脑打开女神图片,这你敢信?
责编:Java就该这么学 | 来源:大数据文摘出品
搞过图像处理的同学应该都认识这位吧?
远在图像产生之前
我们现在熟悉的图像格式其实离我们并不远。JPEG 图像格式于 1993 年推出,GIF 于 1987 年发布。那远在这些图像格式诞生之前,有没有可能显示图像呢?70 年代的大型机和超级计算机确实能够处理照片图像,但那离普通人太远了。第一台个人电脑 Altair 8800 于 1975 年发布,用户可以通过开关进入程序,并通过 Led 灯观看结果:
先有图像还是先有图像格式?
先有鸡还是先有蛋?先有图像还是图像格式?肯定是图像。在最简单的情况下,“格式”是不需要的,单色图像只是一个位序列:
1:03 AM 71 Melissa.txt
12:18 AM 5768 Melissa1.pic
12:18 AM 5768 Melissa2.pic
12:19 AM 5768 Melissa3.pic
12:20 AM 5768 Melissa4.pic
12:21 AM 5768 Melissa5.pic
5:40 AM 35 Opn.txt
12:04 AM 5768 Opps.pic
12:59 PM 50304 Poker.exe
1:06 AM 1288 Screen.pic
12:03 AM 5768 Stitle.pic
5:09 AM 69 Suzi.txt
12:02 AM 5768 Suzi1.pic
1:33 AM 5768 Suzi2.pic
12:00 AM 5768 Suzi3.pic
12:01 AM 5768 Suzi4.pic
12:00 AM 5768 Suzi5.pic
游戏开发者尽最大努力缩小尺寸:每个文件的大小只有 5768 字节!这样我们只能得到 320x18 的灰度图像。事实上,我们可以使用 Python 打开 pic-file,看到许多细节缺失:他们为什么要花这么多精力呢?
答案很简单ーー当时许多计算机根本没有硬盘驱动器,因此在软盘上写入游戏的能力至关重要。正如我们已经知道的那样,第一张软盘的大小只有 360 KB—— 这不仅对于游戏而言已经足够了,对于 MS-DOS 引导文件也是如此。开发者实际上做到了,游戏的大小只有 140 KB。当然,“按原样”保存图像可能会占用空间,开发人员试图找到更好的方法来保存数据。最早的图像编码方法之一是 RLE (游程编码)。在这种格式下,每个数据块都存储在‘count,value’对中,这样可以更有效地保存图像。作为一个简化的例子,黑白点序列“ bwwbwwwwww”可以保存为“1B3W1B4W”。正如我们所看到的,它更加紧凑,可以用于图形或表格,但是对于真实感图像,“压缩”的图像甚至可以比原始图像更大。最早被广泛使用的格式之一是 PCX (PiCture eXchange) ,它于 1985 年推出。这种格式也使用 RLE 编码,正如我们看到的,头部字段存储了大量附加信息:// Standard PCX header (C/C++)struct PCXHeader {char ID; // ID, always 0x0Achar Version; // The version numberchar Encoding; // Use of encoding (0, 1)char BitPerPixel; // 1, 2, 4 or 8short X1; // The minimum x-coordinate of the image positionshort Y1; // The minimum y coordinate of the image positionshort X2; // The maximum x coordinate of the image positionshort Y2; // The maximum y coordinate of the image positionshort HRes; // The horizontal image resolution in DPIshort VRes; // The vertical image resolution in DPIchar ClrMap[16*3]; // The EGA palette for 16-color imageschar Reserved1;char NumPlanes; // Number of color planes: 1, 3, or 4short BPL; // The number of bytes of one color planeshort Pal_t;char Filler[58];} Header;
PCX 格式实际上不太适合保存照片图像,例如,同一幅 320x240 分辨率的“ Lenna”图像的 16 色格式大小为 35 KB,256 色格式大小为 100 KB。GIF GIF 于 1987 年发布,与 PCX 相比,它要先进得多。GIF 使用的是 Lempel-Ziv-Welch (LZW) 算法,这种算法效率更高ーー同样的 320x240 图像以 GIF 格式保存,只有 37 KB 大小,而 PCX 是 100 KB 大小。1989 年,GIF 的扩展版本发布了,它也可以显示动画。令人惊讶的是,即使在今天,动画 GIF 仍然在使用,甚至在本文中也可以看到这个例子ーー它仍然是最简单的、跨平台的方法,可以将动画内容嵌入到页面中。最后,于 1992 年推出了联合摄影专家组制作的 JPEG 格式。它使用的是有损数据压缩图片,是专门为保存照片而设计的。该算法使用 DCT (离散余弦变换) 来保存数据,这个方法本身是在 1972 年提出的,但是正如我们所看到的,仅仅 20 年之后,公众对这项技术的真正需求出现了。顺便说一下,在 90 年代,色情图片的销售变成了一种生意。从技术角度来看,这些广告来自 1994 年的《电脑杂志》 ,很有趣:总结
让我们回到最初的问题,在将近 40 年前的 80 年代初,有没有可能在 XT 机器上看《花花公子》?从技术上讲,答案是肯定的。这些机器能够显示图像,并且有软盘驱动器,这使得文件共享变得容易。下面是 1983 年制造的一台真正的康柏便携式计算机的运行过程:欢迎有需要的同学试试,如果本文对您有帮助,也请帮忙点个 赞 + 在看 啦!❤️
在 GitHub猿 还有更多优质项目系统学习资源,欢迎分享给其他同学吧!
「Java就该这么学」建立了读者Java交流群,大家可以添加小编微信进行加群。欢迎有想法、乐于分享的朋友们一起交流学习。
扫描添加好友邀你进Java群,加我时注明【姓名+公司+职位】
版权申明:内容来源网络,版权归原作者所有。如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。
往日文章: