Magick++ 為 ImageMagick 影像處理函式庫提供了一個簡易的 C++ API,該函式庫支援讀寫大量影像格式,以及廣泛的傳統影像處理操作。ImageMagick C API 較為複雜,且其資料結構目前沒有文件說明。Magick++ 以簡單、物件導向且文件齊全的架構,提供了對 C API 大部分功能的存取。
Magick++ 旨在支援商業級應用程式開發。為了避免與使用者應用程式發生衝突,Magick++ 中包含的所有符號(由標頭檔<Magick++.h>包含)都屬於 Magick 命名空間。ImageMagick C 函式庫中的符號會匯入 MagickCore 命名空間下,以避免潛在的衝突,而 ImageMagick 巨集只會包含在 Magick++ 實作中,因此不會影響使用者的應用程式。
Magick++ 的核心類別是 Image 類別。Image 類別提供了操作單一影像影格(例如 JPEG 影像)的方法。標準樣板函式庫 (STL)相容的 演算法和函式物件 可用於操作多個影像影格,或讀寫支援多個影像影格的檔案格式(例如 GIF 動畫、MPEG 動畫和 Postscript 檔案)。
Image 類別支援參考計數的記憶體管理,這種管理方式支援內建變數類型(例如「int」)的語義,並具有極高效的運算子 =和複製建構函式(只會指派一個指標),同時確保在需要時複製影像資料,以便修改影像時不會影響先前的世代。由於 Image 類別在內部管理堆積記憶體,因此最好透過 C++ 自動(基於堆疊)記憶體配置來配置影像。這種支援允許大多數使用 Magick++ 的程式無需使用任何指標即可編寫,從而簡化了實作並避免了使用指標的風險。當程式使用自動記憶體配置來配置 Magick++ 影像時,程式的該方面會自然地成為例外安全和執行緒安全的。
影像類別使用許多支援類別來指定參數。顏色透過 Color 類別指定。以 X11 風格字串形式指定的顏色會隱式轉換為 Color 類別。幾何參數(指定寬度、高度和/或 x 和 y 偏移量的參數)透過 Geometry 類別指定。與 Color 類別類似,以 X11 風格字串指定的幾何會隱式轉換為 Geometry 類別。二維可繪製物件透過 Drawable 類別指定。可繪製物件可以作為單一物件提供,也可以作為使用目前影像選項呈現的物件清單提供。蒙太奇選項(蒙太奇是在一張影像中呈現的縮圖網格)透過 Montage 類別指定。
錯誤會使用衍生自 Exception 類別的 C++ 例外狀況回報,而 Exception 類別本身又是衍生自標準 C++ 例外狀況類別。例外狀況會與操作同步回報,並在堆疊展開時由第一個相符的 try 區塊攔截。這允許使用簡潔的程式碼風格,其中可以執行多個相關的 Magick++ 命令,並將錯誤作為一個單元而不是逐行處理。由於 Image 物件提供參考計數的記憶體管理,因此堆疊上未引用的影像會自動清除,避免潛在的記憶體洩漏。
為了便於存取,可透過下表取得可用使用者層級類別的文件。
Blob | 二進位大型物件容器。 |
CoderInfo | 回報有關支援影像格式的資訊(與 coderInfoList() 搭配使用) |
Color | 顏色規格。 |
Drawable | 可繪製形狀(用於「繪製」的輸入)。 |
Exception | C++ 例外物件。 |
幾何 | 幾何規範。 |
影像 | 影像影格。這是 Magick++ 中的主要物件。 |
蒙太奇 | montageImages() 的蒙太奇選項。 |
像素 | 影像像素的低階存取。 |
STL | 用於操作影像影格容器的 STL 演算法和函式物件。 |
字型規格 | 用於字型規格的容器(與 Image::fontTypeMetrics 搭配使用)。 |