当前位置: 首页 > news >正文

拿到Photoshop的源码了,发现两个意想不到的秘密......

今天看到了Photoshop1.0的源码,有两个想不到:

1. 竟然没有用C语言,而是PASCAL。

2. 代码中几乎没啥注释。

仅有的一点儿注释也都是汇编相关的,不过没有注释根本不是问题,因为代码写得太清晰易懂了,添加注释反而会成为一种阻碍。

IBM Almaden 研究院的软件工程首席科学家,也是UML创始人之一的Grady Booch曾经研究过这个版本的代码,他说:

Photoshop的架构设计得非常精良,尤其是每种类型都抽象得如此出色,以至于带来令人惊叹的简洁实现。

Photoshop 第一个版本中建立的基本结构例如图块、滤镜、虚拟内存抽象在如今的Photoshop中依然存在,显示了抽象的强大生命力。

Grady Booch 说:这就是我渴望编写的代码!

这样的代码是如何写出来的呢?

今天我们来聊聊Photoshop的故事。

01

无心插柳

托马斯和约翰是兄弟俩,小时候深受父亲的影响,有两个爱好:

1. 喜欢摄影,经常到地下室的暗房去学习冲洗照片。

2. 计算机

两人被父亲带回家的那个外形奇特的盒子而深深吸引,这是一台Apple II Plus电脑。

很明显,这两个年少时的爱好决定了两人未来的发展方向。

哥哥托马斯高中毕业后进入密歇根大学,专业是计算机工程,这让他接受了正规的计算机基础知识的训练。

到了博士阶段,托马斯把注意力转向了计算机视觉。

1987 年,他购买了一台苹果 Macintosh Plus 电脑,以便帮助他完成关于“数字图像处理”的博士论文研究。

然而,令他失望的是,这台 Mac 电脑无法显示图像中的灰度级。

为了解决这个问题,托马斯不得不自己动手,编写了一个程序来模拟灰度效果。

随着研究的深入,类似的小程序越来越多,逐渐形成了一个工具集。

弟弟约翰从南加州大学毕业后,加入了乔治·卢卡斯建立的工业光魔,负责《星球大战》《深渊》等电影的电脑特效。

有一年,弟弟约翰在休假是到密歇根大学探望哥哥托马斯,发现了托马斯编写的这些图形处理工具。

约翰在工业光魔时看过一次皮克斯做的图形演示,其中有很多命令行驱动的Shell工具,和哥哥做的很像。

于是,两人就一起合作,把这些小工具给整合起来,形成了一个叫做Display的软件。

约翰拿着Display回到了工业光魔,在使用中他提出了更多的要求,比如:

把图像保存成其他格式,这样就可以通过别的程序打印了....

图像在屏幕上看起来太暗了,能不能做一点儿伽马校正......

这些来自好莱坞顶尖特效工作室的实际问题,一个个地被抛给了远在密歇根的托马斯。

托马斯现在面临一个两难的选择:是继续写论文,还是和弟弟一起,继续完善这个软件?甚至商业化。

青少年时期就养成的兴趣和爱好,让他选择了后者。

更重要的是,兄弟俩似乎发现了一个全新的机会:在个人电脑上进行图像编辑,这实在是太酷了。

托马斯继续改进Display,几个月后,托马斯决定发布新的软件:ImagePro。

但是这个名称已被别人占有,托马斯就想了一个新名称:Photoshop。

至此,Photoshop正式登上历史舞台。

02

震撼Adobe

当托马斯继续完善Photoshop的时候,弟弟约翰正在硅谷四处推销。

让人失望的是,硅谷的那帮家伙竟然不识货,纷纷拒掉了Photoshop。

只有一家叫BarneyScan的公司愿意试试,可以和他们的扫描仪硬件一起捆绑销售。

最终,Photoshop卖出了可怜的200份!

1988年9月,约翰来到Adobe公司继续推销,他精心准备了一个演示,用Photoshop的魔法棒工具创建了一个带有柔和边缘的蒙版,这一下子就把Adobe创始人John Warnock以及艺术总监Russell Brown给震住了。

因为其他的图像处理软件在创建选区的时候,只能用矩形/圆形工具圈选,或者用套索工具一点点手画圈选,但是Photoshop的魔法棒具有智能选区的能力,图片中有蓝天,你点一下蓝天,就可以自动选取整个天空。

而柔边蒙版意味着可以像摄影暗房那样做渐变处理,可以做柔焦、渐隐,光晕等专业效果。

换句话说,Phtoshop把摄影暗房的技术给数字化了,相比同时代的其他类似软件,这是非常领先的技术。

但是由于Adobe的的核心产品和矢量图形相关的, PostScript(打印语言)和 Illustrator(矢量绘图软件)才是主业,商业和工程部门的人并不看好Photoshop这个处理像素的“玩具软件”。

这时候Adobe的创始人和艺术总监起了关键作用,他们决定先争取一个短期的授权许可,先让Phtoshop成为Illustrator辅助软件,卖一段时间看看再说。

1990年2月,Adobe Phtoshop 1.0正式发布。

03

站在时代风口

Photoshop是一个不折不扣的“硬件杀手”,因为它是基于像素的编辑方式,会把一幅图片整体加载到内存中。

例如一张A4大小、300DPI的RGB图像,其未压缩的数据量大约是:

(8.27英寸 * 300DPI) * (11.69英寸 * 300DPI) * 3个颜色通道 ≈ 2600万像素

每个像素占用1字节(8位/通道),那么这张图在内存中就需要约 25MB 的空间。

如果在考虑到多个图层,撤销等操作,那消耗的内存更吓人了。

90年代内存非常贵,PC能配个32M内存就不错了,Photoshop跑起来非常吃力,不得不把硬盘当做虚拟内存使用。

硬盘速度比内存低几个数量级,所以操作极其卡顿,听到硬盘嘎吱嘎吱地疯狂读写数据,是每个90年代Photoshop用户的集体回忆。

所以,Adobe公司最初对销量也不看好,觉得每个月能卖个250份就不错了。

但是,当历史的大潮来袭的时候,你挡都挡不住:

  • 扫描仪市场开始发展,扫描质量大幅提升,价格下降

  • 彩色显示器和彩色打印机普及

  • 个人电脑因为摩尔定律越来越快越来越便宜。

Photoshop完美地站在了桌面出版、计算机成像、传统摄影的交叉口,它用强大的图像处理能力,迅速成了PC上的杀手级应用。

很多人为了用上Photoshop,都会购买更高性能,更大内存的电脑!

在接下来的10年里,Photoshop竟然卖了超过300万份!把竞争对手远远抛在身后,成为图像处理领域的绝对标杆。

Adobe看到Photoshop如此流行,都超越了自己的主业PostScript和Illustrator,干脆花了3450万美元买断了它的所有权,从此成了Adobe的旗舰产品。

哥哥托马斯因为开发Photoshop而放弃了博士学习,现在看是这个选择是正确的,他打造了一个改变世界的软件。

04

尾声

Photoshop 1988年诞生,今年已经37岁了。

这几十年间,Photoshop已经完全占领了用户的心智,甚至从名词变成了动词,“ps一下”,这是大家对一个产品最大的褒奖。

但是,生成式AI的出现,直接动摇了 Photoshop 赖以存在的底层逻辑。

Photoshop 过去的那些“独门绝技”,正在悄悄变成所有人的日常能力。

37岁的Photoshop,也感受到了AI的压力,正在用Generative Fill、Firefly 等能力重新定义自己,努力从一个修图软件,变成创意的加速器。

未来会怎么样,我们并不知道,只能说:Photoshop 依然在,但它已经不是过去那个Photoshop了。

源码下载地址:

https://computerhistory.org/blog/adobe-photoshop-source-code/

本文作者刘欣,著有畅销书《码农翻身》,《半小时漫画计算机》,前IBM架构师,领导过多个企业应用架构设计和开发工作;洞察技术本质,擅长用故事去讲解复杂技术。

http://www.cnnetsun.cn/news/101822.html

相关文章:

  • TPAMI 2025 | 图像超分新范式:LTPE 以局部纹理分布约束,兼顾视觉质量与参数效率
  • mysql建表后的数据填入
  • Observe · Secure · AI|观测云2025中国可观测日深圳站圆满收官
  • 基于SpringBoot的大学生科技竞赛管理系统(毕业设计项目源码+文档)
  • 基于SpringBoot的动漫分享系统的设计与实现(毕业设计项目源码+文档)
  • 震惊!这3家环保服务商靠谱到让你意想不到!
  • 微服务网格:Istio 流量管理实战
  • 电脑启动太慢怎么解决?从底层优化到专业电脑加速的5大终极策略
  • 我的新能源车企,如何靠六西格玛培训跑赢质量与成本的终极竞赛?
  • [创业之路]-734-没有权力的责任是奴役,没有责任的权力是腐败,没有利益的责任是忽悠。管得好,叫责权利统一;管不好,叫利权责倒挂。一流的组织:用责任牵引权力和利益;末流的组织:用利益和权力逃避责任
  • 基于SpringBoot的自动驾驶数据处理任务众包平台系统毕业设计项目源码
  • 基于SpringBoot的养老院管理系统毕业设计项目源码
  • 若是Windows下的HGDB配置参数work_mem>=2GB会导致HGDB服务无法启动
  • 17、使用psad应对网络攻击:原理、配置与实例
  • EmotiVoice能否替代真人配音?实测对比告诉你
  • EmotiVoice语音紧迫感调控适合警报通知
  • vue基于springboot的土壤监测信息采集系统
  • vue基于springboot的小区停车场收费车辆计费管理系统的设计与实现
  • vue基于springboot的文创产品商城众筹平台设计与实现
  • vue基于springboot的物流运输仓储仓库采购信息系统平台的设计与实现
  • 基于SpringBoot的民宿管理系统的设计与实现毕业设计项目源码
  • 基于SpringBoot的民运会赛务管理系统的设计与实现毕业设计项目源码
  • PCB焊锡虚焊排查与预防全攻略
  • 保姆级教程!把AI大模型训练过程揉碎了讲给你听,小白也能秒懂!
  • 4-DE10-Nano的HDMI方块移动案例——I2C通信协议
  • 5款AI写论文哪个好?深度横评后我发现了宏智树AI学术圈隐藏的“六边形战士”
  • 软件测试认证体系全面分析
  • 局域网扫描工具 MyLanViewer v6.7.2 便携版
  • EmotiVoice能否支持实时变声聊天?技术可行性验证
  • 如何提升合成语音的韵律感?EmotiVoice提供完整方案