MagickWand C 語言範例這些頁面上的程式展示了如何使用 ImageMagick MagickWand API。每個範例都以 C 函數的形式呈現,包含標頭檔,因此您可以將其複製到檔案中,然後包含在您自己的 C 專案中。這些程式碼是針對 Windows 編寫的,並使用 MSVC V7 編譯,但稍作調整後,它也應該可以在 Linux 上運行。 一些範例展示了命令列「程式」以及如何使用 MagickWand 達到相同的輸出。「相同」是指程式產生與命令列範例相同的影像,但不一定是透過與 convert 程式完全相同的方式實現。在某些情況下,只有一個命令列範例需要複製,但在其他情況下,可能會有 3 或 4 個命令相互構建以產生最終結果。在大多數情況下,我建立了一個複製所有命令的 C 函數,但程式碼的每個部分都將顯示它與原始命令的關係。 範例中幾乎沒有錯誤檢查,但您應該在需要的地方添加自己的錯誤檢查。例如,MagickReadImage 函數會根據讀取是否成功返回 true 或 false 值,您應該使用類似以下的程式碼檢查此值
您應該注意,有很多 MagickWand 函數被宣告為返回布林值結果,但它們總是返回 MagickTrue,因此不值得檢查。DrawingWand 命令尤其如此。例如,即使 DrawSetFont 找不到您指定的字體,它也會返回 MagickTrue,因為它會將字體設置為您的預設系統字體。 如果您以前沒有使用過 MagickWand,則應該從一些簡單的事情開始,例如 很容易看出,要將您自己的輸入檔案轉換為另一種格式,只需將「logo:」替換為您的輸入檔名,並將「logo.jpg」替換為您想要的任何輸出檔名。 MagickReadImage 函數非常靈活。它可以接受連結到網際網路上某處影像的網站網址,也可以使用「xc:」檔名慣例生成純色畫布。例如,「xc:red」將建立一個紅色畫布,「xc:none」將建立一個透明畫布。如果您使用「xc:」格式,通常會在讀取函數之前調用 MagickSetSize,否則您將獲得 1x1 像素的影像。值得一讀的是 ImageMagick 格式 頁面底部附近的「虛擬影像」和「內建影像」部分,以查看還有哪些其他虛擬檔案可用。 如果您正在決定是使用 MagickCore 還是 MagickWand,請先查看我在上一段中展示的簡單範例,然後查看為 MagickCore 編寫的等效範例 我相信您會同意,即使在這個簡單的範例中,MagickWand 版本也更容易讀寫。 所有這些程式碼均按「原樣」提供,不提供任何形式的擔保或保證 每個影像都顯示在灰色背景上,以便更好地顯示透明影像 這是每個範例中使用的 MagickWand 函數的 索引 使用 Lanczos 濾鏡將影像大小調整為 50%,並另存為高品質 JPG 簡單的 Flood Fill,將影像的白色背景更改為透明。 稍微複雜一點的泛洪填充(類似於遮罩簡單背景中的第三個範例) 使用剪輯遮罩來限制合成區域 將*所有*白色像素更改為透明 - 我們也得到了巫師的鬍鬚! 繪製形狀:圓形、多邊形、圓角矩形、旋轉和平移的橢圓形、線條 一個函數中的八種文字效果 字體度量很有趣! 創建類似於圓角邊框範例中的圓角矩形遮罩。 從輸入圖像創建可平鋪圖像。 更好的 3D 標誌生成範例 在圖像下方添加反射 - 使用 CopyOpacity 將反射淡化為透明。 使用 MagickDistortImage 進行仿射變換的四個範例 使用 PixelIterators 創建灰階漸變 使用 PixelIterators 讀取和創建圖像,以及進行 HSL/HSB 色彩空間轉換 將 2D 圖像轉換為偽 3D Anthony 的移軸範例 更改標誌中一個像素的顏色:內建圖像 向已清除的影格動畫添加靜態背景 |
如果您有任何意見,請發送至:
或在 ImageMagick 論壇上給我發送私人訊息