那次我用 C++ 重写了 Photoshop
[中文正文内容]
那次我用 C++ 重写了 Photoshop
随着年龄的增长,我回顾了自己作为一名创意开发者所做的一切,看到了很多很酷的项目!但我从未写下任何开发故事,而且这些项目中的大多数,即使在发布时很成功,也随着岁月的流逝而消失了。这就是我开始新的帖子系列“那次我”的原因,我回顾了我最有趣的项目。
第一个是关于那次我用 C++ 和 Windows API 重写了 Photoshop! 我邀请你阅读我的故事并留下评论和反馈,没有你的投入很难继续下去🙂
一切都始于 2006 年初夏。那时我正在阅读大量漫画。但是所有的图像阅读应用程序都很烂。具体来说,没有任何应用程序允许我仅使用鼠标来控制阅读,而且一直够着键盘会分散我的注意力。由于我刚刚在大学完成了 C++/Windows API 课程,所以我花了暑假来编写我完美的漫画阅读器。我把它命名为 Fiew。
2006 年初秋,我们回到了大学,必须决定毕业论文的题目。编写图像查看器进行得很顺利,所以我产生了创建图像编辑器的想法。那时我是 Adobe Photoshop 的重度用户,所以这成为了我的目标。我的意思是,这有多难?事实证明,非常难。
在接下来的几个月里,我使用 Windows API 和 GDI+ 图形库,用 C++ 编写了一个名为 Fedit 的高级图像编辑器。它遵循五个规则,以使最终用户受益:没有安装程序,没有存档,没有注册表项,没有额外的运行时库,以及单个可执行文件。结果是一个无需安装即可工作的程序,可以在权限受限的系统上运行(或直接从 U 盘运行),并且消耗少量资源。
我非常小心地使界面看起来像经典的 Photoshop,并包含了我最常用的所有功能。所以你有所有带有工具的自由浮动窗口。出色的颜色选择器。轻松的图层管理。逐步可逆的历史记录。几个图像滤镜,以及一个矩阵界面来编码你自己的像素偏移滤镜。
从我之前的项目 Fiew 中,我添加了一个巨大的图像库查看器。它确实可以快速轻松地滚动浏览大量图片。
我编写 Fedit 的过程非常有趣。而且一路走来遇到了很多问题。我在 MSDN 和 Stack Overflow 上花费了大量时间,但这并没有太大帮助,因为大多数问题都非常具体,我不得不自己分析和调试它们。但我疯狂地投入其中,我的动力非常强大。我必须赶上学士论文的截止日期,所以在最后的两个月里,我每天工作 14 个小时。
用户界面是最棘手的部分。我希望工作流程尽可能地像 Photoshop。特别是工具设置窗格的自由吸附和取消吸附非常困难。但重现颜色选择器或工具选择器也同样困难。
当我完成时,我感到非常疲惫,并且有点讨厌 WinAPI。但论文很成功,我获得了华沙理工大学的工程学学士学位。Fedit 在网上获得了一些好评,但我没有推广它。相反,我享受了一个当之无愧的假期。几个月后,由于 Fiew 和 Fedit 给 GoldenLine (波兰的 LinkedIn,当时的市场领导者,但现在已经倒闭) 的 CTO 留下了深刻的印象,我获得了一份 C++ 工作,任务是创建一个极其高效的 WinAPI 应用程序,用于处理 Flickr 克隆版的大规模图像上传。所以最终,所有的努力都得到了回报。
Fedit(和 Fiew)的源代码可在 GitHub 上找到。论文文档可作为 PDF 获得。这些应用程序的原始网站仍然在 Web Archive 上可用!