Color Modes

Magick++,C++ API

文件取得 Magick++安裝回報錯誤

Magick++ APIImageMagick 影像處理函式庫的面向對象 C++ API。

Magick++ 支援受 PerlMagick 啟發的物件模型。影像支援隱式引用計數,因此複製建構函式和賦值幾乎不耗費成本。實際複製影像的成本(如果需要)僅在修改之前發生,並且此副本由 Magick++ 自動管理。取消引用的副本會自動刪除。影像物件支援值(而不是指標)語義,因此在記憶體中同時支援影像的多個世代變得非常簡單。

Magick++ 為 標準樣板庫 (STL) 提供整合支援,以便可以使用可用的強大容器(例如 dequevectorlistmap)來編寫類似於 PERL 和 PerlMagick 的程式。提供了 ImageMagick 清單樣式操作的 STL 相容樣板版本,以便可以對儲存在 STL 容器中的多個影像執行操作。

文件

為構成 API 的所有 Magick++ 類別、類別方法和樣板函數提供了詳細的 文件。有關 Magick++ 的入門教學,請參閱 Magick++ 簡介。如果您想更正、增強或擴展教學,我們包含了 來源

取得 Magick++

Magick++ 作為 ImageMagick 原始碼版本的一部分包含在內,可以透過 HTTPGitHub 取得。

安裝

取得 Magick++ 原始碼後,請遵循這些針對 UNIX 和 Windows 的詳細 安裝說明

用法

在 Linux 下安裝了一個名為 Magick++-config 的輔助腳本,它有助於回顧編譯和連結使用 Magick++ 的程式所需的編譯選項。例如,以下命令編譯原始碼檔案 demo.cpp 並連結它以產生可執行檔 demo(請注意引號是反引號)

c++ `Magick++-config --cxxflags --cppflags` -O2 -o demo demo.cpp \
  `Magick++-config --ldflags --libs` 

如果 ImageMagick 不在您的預設系統路徑中,請設定 PKG_CONFIG_PATH 環境變數

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig 

Windows 使用者可以透過手動編輯其中一個 Magick++ 範例程式的專案檔案來開始使用。

請注意,在 Windows(可能還有 Mac)下,可能需要在使用 Magick++ 函式庫之前初始化 ImageMagick 函式庫。此初始化是透過將 ImageMagick DLL 的路徑(假設與您的程式位於同一目錄中)傳遞給 InitializeMagick() 函數呼叫來執行的。這通常是透過提供您的程式路徑 (argv[0]) 來執行的,如下例所示

int main( int argc, char ** argv) {
  InitializeMagick(*argv);
  ...  

在 Linux、Linux、Cygwin 或任何其他支援在已知位置安裝 ImageMagick 概念的操作環境下,不需要此初始化步驟。

這是一個使用 Magick++ API 的範例程式,可以幫助您入門,magick++.cpp。它讀取影像、裁剪它,並將其以 PNG 影像格式寫入磁碟。


#include <Magick++.h> 
#include <iostream> 

using namespace std; 
using namespace Magick; 

int main(int argc,char **argv) 
{ 
  InitializeMagick(*argv);

  // Construct the image object. Separating image construction from the 
  // the read operation ensures that a failure to read the image file 
  // doesn't render the image object useless. 
  Image image;
  try { 
    // Read a file into image object 
    image.read( "logo:" );

    // Crop the image to specified size (width, height, xOffset, yOffset)
    image.crop( Geometry(100,100, 100, 100) );

    // Write the image to a file 
    image.write( "logo.png" ); 
  } 
  catch( Exception &error_ ) 
    { 
      cout << "Caught exception: " << error_.what() << endl; 
      return 1; 
    } 
  return 0; 
} 

回報錯誤

有關使用的問題應直接發送至或報告任何錯誤至 Magick++ 社群論壇