Color Modes - ImageMagick 圖像庫

歷史

我以我的生命以及我對生命的熱愛發誓,我永遠不會為他人而活,也不會要求他人為我而活。-- 約翰·高特 出自艾茵·蘭德的《地球震顫》

ImageMagick 的緣起,來自於我在杜邦公司的上司 David Pensak 博士提出的一個需求:他希望能夠在一台只能同時顯示 256 種獨特顏色的顯示器上顯示電腦生成的圖像。

在 1987 年,能夠顯示 24 位元真彩圖像的顯示器非常罕見且價格昂貴。當時杜邦公司有許多化學家和生物學家,但能諮詢的電腦科學家卻寥寥無幾。於是我轉向 Usenet 尋求幫助,並發布了一個請求,希望有人能提供將 24 位元圖像縮減為 256 色的演算法。南加州大學資訊科學研究所的 Paul Raveling 做出了回應,他不仅提供了解決方案,而且該方案已經以原始碼的形式存在,可以從南加州大學的 FTP 站點下載。在接下來的幾年中,我在杜邦公司工作時,經常遇到其他棘手的電腦科學問題,並多次從 Usenet 上獲得幫助。最終,我感到有必要對 Usenet 上那些知識淵博的人們提供的幫助表示感謝。我決定將我開發的圖像處理工具免費發布給全世界,以便其他人也能從我的努力中受益。

在 1990 年,免費提供的圖像處理工具很少,所以我預計 ImageMagick 會受到熱烈歡迎。在發布之前,Pensak 博士必須說服杜邦公司的高層管理人員放棄他們可能認為有價值的智慧財產權。我懷疑他們之所以同意,僅僅是因為 ImageMagick 與化學或生物學無關,所以他們不了解它對公司的價值。無論如何,如果沒有杜邦公司將版權轉讓給 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 還沒有達到我預想的效果。Bob 和其他人創建了 ImageMagick 的一個分支,而我則繼續開發 ImageMagick。

我並沒有獨自工作太久。Anthony Thyssen 就 ImageMagick 命令列程式的缺陷與我聯繫。他指出,在處理多個圖像時,命令列會令人困惑。他建議採用一種有序、定義明確的方法來處理命令列,這就成了 ImageMagick 版本 6。他的貢獻詳細記錄在他的網頁上,ImageMagick 使用範例。我強烈建議您瀏覽他的網站。他展示了 ImageMagick 的強大功能,甚至連我都不知道它有這樣的功能。

另一位值得注意的貢獻者是 Fred Weinhaus,他提供了大量的命令列 腳本,可執行幾何變換、模糊化、銳利化、邊緣偵測、雜訊消除和色彩處理。Glenn Randers-Pehrson 是我們的 PNG 專家,並做出了其他寶貴的貢獻。Dirk Lemstra 做出並持續改進 ImageMagick,使其在 Windows 下更加穩固,並發行了 .NET 包裝器 Magick.NET

ImageMagick 的設計是一個演進過程,設計和實作工作相互影響和指導進一步的進展。在 ImageMagick 版本 7 中,我們根據從版本 6 實作中吸取的教訓改進了設計。ImageMagick 最初設計用於將 RGB 圖像顯示到 X Windows 伺服器。隨著時間的推移,我們擴展了對 RGBA 圖像的支持,然後是 CMYK 和 CMYKA 圖像格式。在 ImageMagick 版本 7 中,我們將支持範圍擴展到具有任意數量的像素通道的任意色彩空間。此外,ImageMagick 7 將像素通道存儲為浮點數,允許帶外值(例如負值)並減少捨入誤差。

Cristy
ImageMagick 首席架構師