⚠️ 这是一个非官方翻译网站,与 ImageMagick Studio LLC 无关。准确信息请参阅原文(https://imagemagick.org/history/)

ImageMagick 的历史

我以我的生命及对它的热爱起誓:我绝不会为他人而活,也绝不会要求他人为我而活。 -- 艾茵·兰德《阿特拉斯耸耸肩》中的 John Galt

ImageMagick 起源于我在 DuPont 的上司 David Pensak 博士提出的一个请求——要在一台同时只能显示 256 种颜色的显示器上展示计算机生成的图像。

1987 年,能够显示 24 位真彩色图像的显示器既稀少又相当昂贵。DuPont 有大量的化学家和生物学家,但能够请教的计算机科学家却寥寥无几。于是我转向 Usenet 寻求帮助,发帖请求一种将 24 位图像缩减为 256 色的算法。USC 信息科学研究所的 Paul Raveling 回应了我,不仅给出了解决方案,而且这个方案已经写成源代码并可从 USC 的 FTP 站点获取。在接下来的几年里,我在 DuPont 工作中遇到的其他棘手的计算机科学问题上,也频繁地获得帮助的机会。最终我感到有必要为我从 Usenet 上那些博学之人那里得到的帮助表达感谢。我决定将自己开发的图像处理工具免费向全世界发布,让其他人也能从我的努力中受益。

1990 年,免费可用的图像处理工具寥寥无几,因此我期待会得到热烈的欢迎。在发布成为可能之前,Pensak 博士必须说服 DuPont 的高层管理者,让他们同意把一些他们可能视为宝贵知识产权的东西无偿赠予他人。我怀疑他们之所以同意,仅仅是因为 ImageMagick 并非基于化学或生物学,所以他们并不理解它对公司的价值。无论如何,如果没有 DuPont 将版权转让给 ImageMagick Studio LLC,ImageMagick 今天就不会存在。ImageMagick 于 1990 年 8 月 1 日发布到 Usenet 的 comp.archives 群组。

ImageMagick 发布之后,我时常收到对功能增强的请求、错误的报告,或对源代码库的贡献。90 年代中期,我将这些努力的集大成发布为 ImageMagick 4.2.9。当时我以为 ImageMagick 已经完成了。它被全世界数千名用户使用,甚至开始作为一个名为「Linux」的免费分发的新操作系统的一部分出现。

下一代 ImageMagick 即版本 5,始于 Bob Friesenhahn 与我联系,并建议我改进应用程序编程接口,使用户能够从其他语言或脚本中利用图像处理算法。Bob 还为 ImageMagick 编写了一个名为 Magick++ 的 C++ 封装,并开始贡献诸如模块加载器机制、自动文件识别和测试套件等增强功能。与此同时,该项目还吸引了其他几位值得注意的贡献者:Glenn Randers-Pehrson、William Radcliffe 和 Leonard Rosenthol。此时 ImageMagick 已被数万名用户使用,当新版本破坏了现有的 API 调用或脚本时,他们的反应颇为不满。小组中的其他成员希望冻结 API 和命令行,但我觉得 ImageMagick 还没有达到我所设想的样子。在我继续开发 ImageMagick 的同时,Bob 等人创建了一个 ImageMagick 的分支。

我独自工作的时间并不长。Anthony Thyssen 就 ImageMagick 命令行程序的不足之处与我联系。他指出,在处理多个图像时命令行令人困惑。他提出了一种处理命令行的有序、定义明确的方法,这就成了 ImageMagick 版本 6。他的努力详细记录在他的网页 Examples of ImageMagick Usage 中。我强烈建议你仔细浏览他的站点。他以连我自己都不知道可能实现的方式,展示了 ImageMagick 的强大能力。

另一位值得注意的贡献者 Fred Weinhaus,公开了大量执行几何变换、模糊、锐化、描边、噪点去除和颜色操作的命令行脚本。Glenn Randers-Pehrson 是我们的 PNG 大师,还做出了其他宝贵的贡献。Dirk Lemstra 做了并仍在持续做大量改进,使 ImageMagick 在 Windows 下更加健壮,并发布了一个 .NET 封装 Magick.NET

ImageMagick 的设计是一个不断演进的过程,设计与实现的努力相互影响、相互指引,推动进一步的进步。在 ImageMagick 版本 7 中,我们基于从版本 6 实现中汲取的经验教训改进了设计。ImageMagick 最初的设计是向 X Windows 服务器显示 RGB 图像。随着时间推移,我们将支持扩展到 RGBA 图像,然后是 CMYK 和 CMYKA 图像格式。在 ImageMagick 版本 7 中,我们将支持扩展到具有任意数量像素通道的任意色彩空间。此外,ImageMagick 7 将像素通道存储为浮点数,从而允许带外值(例如负值)并减少舍入误差。

Cristy
ImageMagick 首席架构师