Magick::Image 類別

快速目錄

Image 是 Magick++ 中的主要物件,表示單一影像幀(請參閱設計)。必須使用STL 介面來操作影像序列或影像(例如 GIF、TIFF、MIFF、Postscript 和 MNG 格式),這些影像由多個影像幀組成。可以透過在檔案名稱末尾添加陣列樣式表示法來請求多幀影像的個別幀(例如,“animation.gif[3]”會擷取 GIF 動畫的第四幀)。可以對影像應用各種影像操作。可以在影像上設定屬性,以影響操作操作的操作。 Pixels 類別提供對影像像素的低階存取。為了方便起見,包含<Magick++.h>就足以使用完整的 Magick++ API。Magick++ API 包含在 Magick 命名空間中,因此您必須在每個類別/列舉名稱前面加上前綴“Magick:”或在包含using namespace Magick;標頭之後添加語句“Magick++.h”。

配置 Image 物件的首選方法是透過自動配置(在堆疊上)。無需擔心在堆疊上配置 Image 物件會過度擴大堆疊,因為 Magick++ 會從堆積配置所有大型資料物件(例如實際的影像資料)。與顯式配置(透過 new)相比,首選使用自動配置,因為它更不容易出錯,並且允許使用 C++ 範圍規則來避免記憶體洩漏。使用自動配置允許像 C++ 內建資料類型(例如“int”)一樣配置和複製 Magick++ 物件,從而產生清晰且易於閱讀的程式碼。由於如果拋出異常,物件會在堆疊展開到配置範圍之外時自動解除配置(對於透過 new 配置的物件則不然),因此使用自動配置會自然而然地產生異常安全的程式碼。

Image 非常易於使用。例如,以下是一個程式的原始碼,該程式讀取影像、裁剪影像並將其寫入新檔案(異常處理是可選的,但強烈建議使用)

#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( "girl.gif" );

    // 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( "x.gif" ); 
  } 
  catch( Exception &error_ ) 
    { 
      cout << "Caught exception: " << error_.what() << endl; 
      return 1; 
    } 
  return 0; 
}
以下是一個程式的原始碼,該程式說明了 Magick++ 的高效能參考計數配置和複製建構函式操作的使用,這些操作將記憶體的使用降至最低,並消除了不必要的複製操作(允許有效地配置 Image 物件並將其複製到容器中)。該程式完成以下操作
  1. 讀取主影像。
  2. 將主影像配置給第二個影像。
  3. 將第二個影像的大小調整為 640x480。
  4. 將主影像配置給第三個影像。
  5. 將第三個影像的大小調整為 800x600。
  6. 將第二個影像寫入檔案。
  7. 將第三個影像寫入檔案。
#include <Magick++.h> 
#include <iostream> 
using namespace std; 
using namespace Magick; 
int main(int argc,char **argv) 
{ 
  InitializeMagick(*argv);

  Image master("horse.jpg"); 
  Image second = master; 
  second.resize("640x480"); 
  Image third = master; 
  third.resize("800x600"); 
  second.write("horse640x480.jpg"); 
  third.write("horse800x600.jpg"); 
  return 0; 
}
在整個操作過程中,記憶體中最多存在三個影像,並且永遠不會複製影像資料。

以下是另一個簡單程式的原始碼,該程式建立一個 100 x 100 像素的白色影像,其中間有一個紅色像素,並將其寫入檔案

#include <Magick++.h> 
using namespace std; 
using namespace Magick; 
int main(int argc,char **argv) 
{ 
  InitializeMagick(*argv);
  Image image( "100x100", "white" ); 
  image.pixelColor( 49, 49, "red" ); 
  image.write( "red_pixel.png" ); 
  return 0; 
}
如果您想將彩色影像更改為灰階,則可以添加以下行
image.quantizeColorSpace( GRAYColorspace ); 
image.quantizeColors( 256 ); 
image.quantize( );

或者,更簡單地說

 image.type( GrayscaleType );

在寫入影像之前。

BLOB

雖然編碼圖像(例如 JPEG)最常寫入和讀取自磁碟檔案,但編碼圖像也可以駐留在記憶體中。記憶體中的編碼圖像稱為 BLOB(二進制大物件),可以使用 Blob 類別表示。編碼圖像最初可以通過直接從檔案讀取、從資料庫讀取圖像、從磁碟檔案記憶體映射或由 Magick++ 寫入記憶體來放入記憶體中。一旦編碼圖像被放入 Blob 中,就可以通過 建構函式read() 將其讀入 Magick++ 圖像。同樣,Magick++ 圖像也可以通過 write() 寫入 Blob。

以下是如何使用 Image 寫入 Blob 的範例
 

#include >Magick++.h> 
using namespace std; 
using namespace Magick; 
int main(int argc,char **argv) 
{ 
  InitializeMagick(*argv);

  // Read GIF file from disk 
  Image image( "giraffe.gif" );
  // Write to BLOB in JPEG format 
  Blob blob; 
  image.magick( "JPEG" ) // Set JPEG output format 
  image.write( &blob );

  [ Use BLOB data (in JPEG format) here ]

  return 0; 
}


同樣,要從 Blob 讀取圖像,您可以使用以下範例之一

[ 以下範例的輸入條件是 *data* 是指向編碼圖像資料的指標,而 *length* 表示資料的大小 ]

Blob blob( data, length ); 
Image image( blob );
Blob blob( data, length ); 
Image image; 
image.read( blob);
某些圖像不包含其大小或格式,因此必須事先指定大小和格式
Blob blob( data, length ); 
Image image; 
image.size( "640x480") 
image.magick( "RGBA" ); 
image.read( blob);

建構函式

Image 可以通過多種方式建構。它可以從檔案、URL 或記憶體中包含的編碼圖像(例如 JPEG) BLOB 建構。可用的 Image 建構函式如下表所示
 
 
Image 建構函式
簽章
說明
const std::string &imageSpec_ 通過從 *imageSpec_* 指定的檔案或 URL 讀取來建構 Image。使用陣列表示法(例如 filename[9])從多幀圖像中選擇特定場景。
const Geometry &size_, const Color &color_ 建構指定大小和顏色的空白圖像畫布
const Blob &blob_ 通過從記憶體 BLOB 中包含的編碼圖像資料讀取來建構 Image。根據建構函式參數,也可以指定 Blob 的 大小深度magick(格式)。某些圖像格式要求指定大小。ImageMagick 用於深度的預設值取決於編譯的 Quantum 大小(8 或 16)。 如果 ImageMagick 的 Quantum 大小與圖像的不符,則可能需要指定深度。ImageMagick 通常可以自動檢測圖像的格式。當無法自動檢測格式時,必須指定格式(magick)。
const Blob &blob_, const Geometry &size_
const Blob &blob_, const Geometry &size, size_t depth
const Blob &blob_, const Geometry &size, size_t depth_, const string &magick_
const Blob &blob_, const Geometry &size, const string &magick_
const size_t width_, 
const size_t height_,
std::string map_,
const StorageType type_,
const void *pixels_
根據圖像像素陣列建構新的 Image。像素資料必須按從上到下的掃描線順序排列。資料可以是字元、短整數、整數、浮點數或雙精度浮點數。浮點數和雙精度浮點數要求像素標準化為 [0..1]。其他類型為 [0..MaxRGB]。 例如,要從無符號紅綠藍字元資料建立 640x480 圖像,請使用

   Image image( 640, 480, "RGB", 0, pixels );

參數如下
 

width_ 圖像的像素寬度。
height_ 圖像的像素高度。
map_ 此字元字串可以是 R = 紅色、G = 綠色、B = 藍色、A = alpha、C = 青色、Y = 黃色、M = 洋紅色和 K = 黑色 的任意組合或順序。順序反映了提供的像素陣列中像素的順序。
type_ 像素儲存類型 (CharPixel、ShortPixel、IntegerPixel、FloatPixel 或 DoublePixel)
pixels_ 此值陣列包含由 map_ 和 type_ 參數定義的像素分量。陣列的長度必須等於 width_ 和 height_ 值以及 type_ 參數所指定的區域。

影像處理方法

Image 支援 ImageMagick 函式庫提供的所有單一影像(相對於影像列表)處理操作。如果您必須處理多影像檔案(例如動畫),則必須使用在 Image 之上提供多影像抽象化的 STL 介面

影像處理方法非常易於使用。例如

Image image; 
image.read("myImage.tiff"); 
image.addNoise(GaussianNoise); 
image.write("myImage.tiff");
將高斯雜訊添加到影像檔案「myImage.tiff」。

Image 支援的操作如下表所示
 

影像影像處理方法
方法 簽章 說明
adaptiveThreshold
size_t width, size_t height, size_t offset = 0
對影像套用自適應閾值處理。如果預先不知道理想的閾值級別,或者如果照明梯度在影像中不恆定,則自適應閾值處理非常有用。自適應閾值處理的工作原理是評估像素區域(大小由 *width* 和 *height* 指定)的平均值,並使用平均值作為閾值。為了從背景中移除殘留雜訊,可以透過從平均值中減去常數 *offset*(預設為零)來調整閾值以計算閾值。
addNoise
NoiseType noiseType_ 使用指定的雜訊類型將雜訊添加到影像。
addNoiseChannel
const ChannelType channel_, const NoiseType noiseType_
使用指定的雜訊類型將雜訊添加到影像通道。*channel_* 參數指定要添加雜訊的通道。noiseType_ 參數指定雜訊的類型。
affineTransform
const DrawableAffine &affine
透過指定的仿射(或自由變換)矩陣變換影像。
annotate
const std::string &text_, const Geometry &location_ 使用指定的文字和放置位置進行註釋
string text_, const Geometry &boundingArea_, GravityType gravity_ 使用指定的文字、邊界區域和放置重力進行註釋。如果 *boundingArea_* 無效,則邊界區域為整個影像。
const std::string &text_, const Geometry &boundingArea_, GravityType gravity_, double degrees_,  使用指定的文字、邊界區域、放置重力和旋轉角度進行註釋。如果 *boundingArea_* 無效,則邊界區域為整個影像。
const std::string &text_, GravityType gravity_ 使用文字(邊界區域為整個影像)和放置重力進行註釋。
blur
const double radius_ = 1, const double sigma_ = 0.5 模糊影像。*radius_* 參數指定高斯的半徑(以像素為單位),不包括中心像素。 *sigma_* 參數指定拉普拉斯算子的標準差(以像素為單位)。
blurChannel
const ChannelType channel_, const double radius_ = 0.0, const double sigma_ = 1.0
模糊影像通道。*channel_* 參數指定要模糊的通道。*radius_* 參數指定高斯的半徑(以像素為單位),不包括中心像素。 *sigma_* 參數指定拉普拉斯算子的標準差(以像素為單位)。
border
const Geometry &geometry_ = "6x6+0+0" 邊框圖像(為圖像添加邊框)。  邊框的顏色由 borderColor 屬性指定。
cdl
const std::string &cdl_ 使用顏色決策列表進行色彩校正。有關詳細信息,請參閱 http://en.wikipedia.org/wiki/ASC_CDL
通道
ChannelType channel_ 從圖像中提取通道。使用此選項從圖像中提取特定通道。  例如,alphaChannel  可用於從圖像中提取 alpha 值。
炭筆
const double radius_ = 1, const double sigma_ = 0.5 炭筆效果圖像(看起來像炭筆素描)。radius_ 參數指定高斯的半徑(以像素為單位,不包括中心像素)。  sigma_ 參數指定拉普拉斯算子的標準差(以像素為單位)。
裁剪
const Geometry &geometry_ 裁剪圖像(移除圖像的垂直或水平子區域)
著色
const unsigned int opacityRed_, const unsigned int opacityGreen_, const unsigned int opacityBlue_, const Color &penColor_ 使用指定的紅色、綠色和藍色量子不透明度百分比,用畫筆顏色對圖像進行著色。
顏色矩陣
const size_t order_, const double *color_matrix_ 對圖像應用色彩校正。
註釋
const std::string &comment_ 為圖像添加註釋(將註釋字符串添加到圖像)。  默認情況下,每個圖像都會使用其文件名進行註釋。使用此方法可以為圖像分配特定的註釋。  您也可以選擇通過嵌入 特殊格式字符 來包含圖像文件名、類型、寬度、高度或其他圖像屬性。
比較
const Image &reference_
將當前圖像與另一個圖像進行比較。在當前圖像中設置 meanErrorPerPixelnormalizedMaxErrornormalizedMeanError。如果圖像相同,則返回 False。如果參考圖像的列、行、色彩空間或蒙版與當前圖像不同,則會拋出 ErrorOption 異常。
合成
const Image &compositeImage_, ssize_t xOffset_, ssize_t yOffset_, CompositeOperator compose_ = InCompositeOp 使用 compose_ 指定的合成算法,將圖像合成到當前圖像上,偏移量由 xOffset_yOffset_ 指定。 
const Image &compositeImage_, const Geometry &offset_, CompositeOperator compose_ = InCompositeOp 使用 compose_ 指定的合成算法,將圖像合成到當前圖像上,偏移量由 offset_ 指定。 
const Image &compositeImage_, GravityType gravity_, CompositeOperator compose_ = InCompositeOp 使用 compose_ 指定的合成算法,將圖像合成到當前圖像上,放置位置由 gravity_ 指定。 
對比度
size_t sharpen_ 對比圖像(增強圖像中的強度差異)
卷積
size_t order_, const double *kernel_ 對圖像進行卷積。  對圖像應用用戶指定的卷積。order_ 參數表示濾波器內核中的列數和行數,kernel_ 是一個表示要應用的卷積內核的二維雙精度數組。
裁剪
const Geometry &geometry_ 裁剪圖像(原始圖像的子區域)
循環顏色圖
int amount_ 循環圖像顏色圖
去斑
void 去斑圖像(減少斑點噪聲)
顯示
void 在屏幕上顯示圖像。
注意: 如果圖像格式與顯示器的視覺效果不兼容(例如,彩色貼圖顯示器上的 JPEG),則原始圖像將被更改。如果出現此問題,請使用原始圖像的副本。
扭曲
const DistortImageMethod method, const size_t number_arguments, const double *arguments, const bool bestfit = false 扭曲圖像。  對圖像應用用戶指定的扭曲。
繪製
const Drawable &drawable_ 在影像上繪製形狀或文字。
const std::list<Drawable > &drawable_ 使用 STL 清單中的一組 Drawable 物件在影像上繪製形狀或文字。使用此方法可以提高繪圖效能,並允許將繪圖物件一起批次處理到清單中以重複使用。
邊緣
size_t radius_ = 0.0 邊緣影像(突出顯示影像中的邊緣)。  半徑是像素鄰域的半徑。指定半徑為零表示自動選擇半徑。
浮雕
const double radius_ = 1, const double sigma_ = 0.5 浮雕影像(以 3D 效果突出顯示邊緣)。radius_ 參數指定高斯的半徑(以像素為單位),不包括中心像素。  sigma_ 參數指定拉普拉斯算子的標準差(以像素為單位)。
增強
void 增強影像(減少雜訊)
等化
void 等化影像(直方圖等化)
清除
void 將所有影像像素設定為目前的背景顏色。
範圍
const Geometry &geometry_ 根據幾何形狀、重力和影像背景顏色擴展影像。
const Geometry &geometry_, const Color &backgroundColor_
const Geometry &geometry_, const GravityType &gravity_ 根據幾何形狀、重力和影像背景顏色擴展影像。
const Geometry &geometry_, const Color &backgroundColor_, const GravityType &gravity_
翻轉
void 翻轉影像(在垂直方向上反射每一條掃描線)
floodFill-
顏色
ssize_t x_, ssize_t y_, const Color &fillColor_ 在與目標像素顏色匹配且是目標像素鄰居的像素上進行顏色填充。在判斷顏色匹配時使用目前的模糊設定。
const Geometry &point_, const Color &fillColor_
ssize_t x_, ssize_t y_, const Color &fillColor_, const Color &borderColor_ 從目標像素開始,在與指定邊框顏色匹配的像素處停止,進行顏色填充。在判斷顏色匹配時使用目前的模糊設定。
const Geometry &point_, const Color &fillColor_, const Color &borderColor_
floodFillOpacity const long x_, const long y_, const unsigned int opacity_, const PaintMethod method_ 使用指定方法,將與目標像素 (x,y) 顏色匹配(在模糊因子內)的像素填充為替換的不透明度值。
floodFill-
紋理
ssize_t x_, ssize_t y_,  const Image &texture_ 在與目標像素顏色匹配且是目標像素鄰居的像素上進行紋理填充。在判斷顏色匹配時使用目前的模糊設定。
const Geometry &point_, const Image &texture_
ssize_t x_, ssize_t y_, const Image &texture_, const Color &borderColor_ 從目標像素開始,在與指定邊框顏色匹配的像素處停止,進行紋理填充。在判斷顏色匹配時使用目前的模糊設定。
const Geometry &point_, const Image &texture_, const Color &borderColor_
翻轉
void  水平翻轉影像(在水平方向上反射每一條掃描線)
邊框
const Geometry &geometry_ = "25x25+6+6" 在影像周圍加上裝飾性邊框
size_t width_, size_t height_, ssize_t x_, ssize_t y_, ssize_t innerBevel_ = 0, ssize_t outerBevel_ = 0
fx
const std::string expression, const Magick::ChannelType channel Fx 影像。  對影像套用數學運算式。
伽瑪
double gamma_ 伽瑪校正影像(統一的紅色、綠色和藍色校正)。
double gammaRed_, double gammaGreen_, double gammaBlue_ 伽瑪校正影像的紅色、綠色和藍色通道。
高斯模糊
const double width_, const double sigma_ 高斯模糊影像。捲積遮罩中要包含的相鄰像素數量由「width_」指定。 例如,寬度為 1 會產生 (標準) 3x3 捲積遮罩。高斯鐘形曲線的標準差由「sigma_」指定。
gaussianBlurChannel
const ChannelType channel_, const double radius_ = 0.0, const double sigma_ = 1.0
高斯模糊影像通道。「channel_」參數指定要模糊的通道。捲積遮罩中要包含的相鄰像素數量由「width_」指定。 例如,寬度為 1 會產生 (標準) 3x3 捲積遮罩。高斯鐘形曲線的標準差由「sigma_」指定。
haldClut
const Image &reference_
將 Hald 色彩查找表套用至影像。
implode
const double factor_ 內爆影像(特殊效果)
inverseFourierTransform
const Image &phaseImage_, const bool magnitude_ 將影像的逆離散傅立葉變換 (DFT) 實作為幅度/相位或實部/虛部影像對。
label
const string &label_ 為影像指定標籤。使用此選項將特定標籤指定給影像。或者,您可以透過嵌入特殊格式字元,在標籤中包含影像檔名、類型、寬度、高度或場景編號。如果字串的第一個字元是 @,則會從由字串中其餘字元命名的檔案中讀取影像標籤。轉換為 Postscript 時,請使用此選項指定要列印在影像上方的標題字串。
level
const double black_point, const double white_point, const double mid_point=1.0
色階影像。透過將落在指定白色和黑色點之間的顏色縮放到完整可用的量子範圍來調整影像的色階。提供的參數代表黑色、中間調 (伽瑪) 和白色點。黑色點指定影像中最暗的顏色。比黑色點暗的顏色會設定為零。中間調 (伽瑪) 指定要套用至影像的伽瑪校正。白色點指定影像中最亮的顏色。比白色點亮的顏色會設定為最大量子值。黑色和白色點的有效範圍為 0 到 MaxRGB,而中間調 (伽瑪) 的有效範圍為 0 到 10。
levelChannel
const ChannelType channel, const double black_point, const double white_point, const double mid_point=1.0
色階影像通道。透過將落在指定白色和黑色點之間的值縮放到完整可用的量子範圍來調整影像通道的色階。提供的參數代表黑色、中間調 (伽瑪) 和白色點。黑色點指定影像中最暗的顏色。比黑色點暗的顏色會設定為零。中間調 (伽瑪) 指定要套用至影像的伽瑪校正。白色點指定影像中最亮的顏色。比白色點亮的顏色會設定為最大量子值。黑色和白色點的有效範圍為 0 到 MaxRGB,而中間調 (伽瑪) 的有效範圍為 0 到 10。
magnify
void 按整數大小放大影像
map
const Image &mapImage_ , bool dither_ = false 使用參考影像中最接近的顏色重新映射影像顏色。將 dither_ 設定為「true」以將 Floyd/Steinberg 誤差擴散套用至影像。根據預設,色彩減少會選擇最能代表原始影像的最佳色彩集。或者,您可以使用此選項從影像檔案中選擇特定的色彩集。
floodFillAlpha
const ssize_t x_, const ssize_t, const unsigned int  alpha_, const Color &target_, const bool invert_ 使用替換的 Alpha 值填充指定區域。
medianFilter const double radius_ = 0.0 透過將每個像素分量替換為圓形鄰域中的中間顏色來過濾影像
mergeLayers
LayerMethod noiseType_ 處理形成一組圖像圖層或動畫幀的多個圖像。
minify
void 將圖像縮小為整數大小
modifyImage void 準備更新圖像。確保只有一個對底層圖像的引用,以便可以安全地修改底層圖像,而不會影響先前生成的圖像。如有必要,將底層圖像複製到新圖像。
modulate
double brightness_,double saturation_,double hue_ 調整圖像的色調、飽和度和亮度百分比。飽和度和亮度的調整是當前值的比率(1.0 表示不變)。色調的調整是從當前位置開始 -180 度到 +180 度的絕對旋轉,對應於 0 到 2.0 的參數範圍(1.0 表示不變)。
motionBlur
const double radius_,const double sigma_,const double angle_
使用指定的模糊因子對圖像進行動態模糊。 radius_ 參數指定高斯的半徑(以像素為單位),不包括中心像素。 sigma_ 參數指定拉普拉斯算子的標準差(以像素為單位)。 angle_ 參數指定物體出現的角度(零度表示從右側開始)。
negate
bool grayscale_ = false 反轉圖像中的顏色。將每個像素替換為其補色(白色變為黑色,黃色變為藍色等)。設置灰度僅反轉圖像中的灰度值。
normalize
void 標準化圖像(通過將像素值標準化以跨越顏色值的完整範圍來增加對比度)。
oilPaint
size_t radius_ = 3 油畫圖像(圖像看起來像油畫)
opacity
unsigned int opacity_ 設置或衰減圖像中的不透明度通道。如果圖像像素是不透明的,則將它們設置為指定的不透明度值,否則將它們與提供的不透明度值混合。 opacity_ 的值範圍從 0(完全不透明)到 MaxRGB。定義了 OpaqueOpacity 和 TransparentOpacity 分別指定完全不透明或完全透明。
opaque
const Color &opaqueColor_,const Color &penColor_ 將與 opaqueColor_ 匹配的像素的顏色更改為指定的 penColor_。
ping
const std::string &imageSpec_ Ping 類似於 read,只是僅讀取足夠的圖像以確定圖像的列數、行數和文件大小。 columns, rowsfileSize 屬性在調用 ping 後有效。調用 ping 後,圖像數據無效。
const Blob &blob_
process
std::string name_,const ssize_t argc_,char **argv_
執行指定的處理模組,通過參數向量傳遞任何參數,其中 argc_ 指定向量中的參數數量,argv_ 傳遞由構成參數向量的以 null 結尾的 C 字串組成的數組的地址。如果請求的處理模組不存在、加載失敗或執行期間失敗,則會引發異常。
quantize
bool measureError_ = false 量化圖像(減少顏色數量)。將 measureError_ 設置為 true 以計算錯誤屬性。
raise
const Geometry &geometry_ = "6x6+0+0", bool raisedFlag_ = false 浮雕圖像(使圖像的邊緣變亮或變暗,以產生 3D 浮雕或凹陷效果)
read
const string &imageSpec_ 將圖像讀入當前對象
const Geometry &size_,const std::string &imageSpec_ 將指定大小的圖像讀入當前物件。此形式對於未指定大小的圖像或為解碼圖像指定大小提示很有用。例如,在讀取照片 CD、JBIG 或 JPEG 圖像時,大小請求會導致程式庫返回分辨率大於或等於指定大小的圖像。這可能會節省內存和時間。
const Blob &blob_ 將指定大小的編碼圖像從內存中的 BLOB 讀入當前物件。根據方法參數,還可以指定 Blob 大小、深度和格式。某些圖像格式要求指定大小。ImageMagick 使用的默認深度取決於其量子大小(8 或 16)。如果 ImageMagick 的量子大小與圖像的量子大小不匹配,則可能需要指定深度。ImageMagick 通常可以自動檢測圖像的格式。如果無法自動檢測格式,則必須指定格式。
const Blob &blob_, const Geometry &size_
const Blob &blob_, const Geometry &size_, size_t depth_
const Blob &blob_, const Geometry &size_, size_t depth_, const string &magick_ 
const Blob &blob_, const Geometry &size_, const string &magick_
const size_t width_, const size_t height_, std::string map_, const StorageType type_, const void *pixels_ 根據圖像像素數組讀取圖像。像素數據必須按從上到下的掃描線順序排列。數據可以是字符、短整數、整數、浮點數或雙精度浮點數。浮點數和雙精度浮點數要求像素標準化為 [0..1]。其他類型為 [0..MaxRGB]。例如,要從無符號紅綠藍字符數據創建 640x480 圖像,請使用

  image.read( 640, 480, "RGB", CharPixel, pixels );

參數如下
 

width_ 圖像的像素寬度。
height_ 圖像的像素高度。
map_ 此字元字串可以是 R = 紅色、G = 綠色、B = 藍色、A = alpha、C = 青色、Y = 黃色、M = 洋紅色和 K = 黑色 的任意組合或順序。順序反映了提供的像素陣列中像素的順序。
type_ 像素存儲類型(CharPixel、ShortPixel、IntegerPixel、FloatPixel 或 DoublePixel)
pixels_ 此值陣列包含由 map_ 和 type_ 參數定義的像素分量。陣列的長度必須等於 width_ 和 height_ 值以及 type_ 參數所指定的區域。
reduceNoise
const double order_ 使用噪聲峰值消除濾波器降低圖像中的噪聲。
randomThreshold
const Geometry &thresholds_
對圖像進行隨機閾值處理。根據每個像素相對於隨機閾值的強度來更改單個像素的值。結果是一個低對比度的雙色圖像。thresholds_ 參數是一個包含 LOWxHIGH 閾值的幾何圖形。如果字符串包含 2x2、3x3 或 4x4,則將執行 2、3 或 4 階的有序抖動。這是一種非常快速的基於「量化」抖動的替代方法。
randomThresholdChannel
const Geometry &thresholds_, const ChannelType channel_
對圖像通道進行隨機閾值處理。類似於 randomThreshold(),但僅限於指定的通道。
roll
int columns_, ssize_t rows_ 滾動圖像(垂直和水平滾動圖像)指定的列數和行數)
rotate
double degrees_ 將圖像逆時針旋轉指定的度數。
sample
const Geometry &geometry_  使用像素採樣算法調整圖像大小
scale
const Geometry &geometry_ 使用簡單的比例算法調整圖像大小
segment
double clusterThreshold_ = 1.0,
double smoothingThreshold_ = 1.5
通過分析顏色分量的直方圖並使用模糊 c 均值技術識別均勻的單元來分割(合併相似的圖像分量)。還使用 quantizeColorSpaceverbose 圖像屬性。指定 clusterThreshold_ 作為每個聚類必須超過的像素數才能被視為有效聚類的聚類閾值。SmoothingThreshold_ 消除直方圖二階導數中的噪聲。隨著值的增加,您可以預期二階導數會更平滑。默認為 1.5。
shade
double azimuth_ = 30, double elevation_ = 30,
bool colorShading_ = false
使用遠處光源為圖像添加陰影。 指定 azimuth_elevation_ 作為光源的  位置。 默認情況下,著色結果為灰度圖像。 將 colorShading_ 設置為 true 可為圖像的紅色、綠色和藍色分量著色。
陰影
const double percent_opacity = 80, const double sigma_ = 0.5, const ssize_t x_ = 0, const ssize_t y_ = 0 模擬圖像陰影
銳化
const double radius_ = 1, const double sigma_ = 0.5 銳化圖像中的像素。 radius_ 參數指定高斯的半徑(以像素為單位),不包括中心像素。 sigma_ 參數指定拉普拉斯算子的標準差(以像素為單位)。
銳化通道
const ChannelType channel_, const double radius_ = 0.0, const double sigma_ = 1.0
銳化圖像通道中的像素量子 channel_ 參數指定要銳化的通道。 radius_ 參數指定高斯的半徑(以像素為單位),不包括中心像素。 sigma_ 參數指定拉普拉斯算子的標準差(以像素為單位)。
修剪
const Geometry &geometry_ 修剪圖像邊緣的像素。
剪切
double xShearAngle_, double yShearAngle_ 剪切圖像(通過沿 X 或 Y 軸滑動圖像來創建平行四邊形)。 剪切會沿 X 或 Y 軸滑動圖像的一條邊,從而創建一個平行四邊形。 X 方向剪切會沿 X 軸滑動邊緣,而 Y 方向剪切會沿 Y 軸滑動邊緣。 剪切量由剪切角控制。 對於 X 方向剪切,x 度是相對於 Y 軸測量的,同樣,對於 Y 方向剪切,y 度是相對於 X 軸測量的。 從剪切圖像中留下的空白三角形將使用定義為 borderColor 的顏色填充。
曝光過度
double factor_ = 50.0 曝光過度圖像(類似於在顯影過程中將攝影膠片曝光在光線下時看到的效果)
拼接
const Geometry &geometry_ 將背景顏色拼接 into the image
擴散
size_t amount_ = 3 在圖像中隨機擴散像素指定數量
隱寫術
const Image &watermark_ 向圖像添加數字水印(基於第二張圖像)
稀疏顏色
const ChannelType channel, const SparseColorMethod method, const size_t number_arguments, const double *arguments 稀疏顏色圖像,給定一組坐標,使用各種方法在整個圖像中插入在這些坐標處找到的顏色。
統計數據
ImageStatistics *statistics 獲取圖像統計信息。 統計數據會標準化為 0.0 到 1.0 的範圍,並輸出到指定的 ImageStatistics 結構。 該結構包括以下每個通道的最大值、最小值、平均值、標準差和方差:紅色、綠色、藍色和不透明度(例如 statistics->red.maximum)。
立體
const Image &rightImage_ 創建一個圖像,當用紅藍眼鏡觀看時會顯示立體效果(左邊是紅色圖像,右邊是藍色圖像)
漩渦
double degrees_ 旋轉圖像(圖像像素旋轉度數)
紋理
const Image &texture_ 在與圖像背景顏色匹配的像素上疊加紋理。
閾值
double threshold_ 閾值圖像
變換
const 幾何 &imageGeometry_ 根據圖像和裁剪幾何變換圖像。 裁剪幾何是可選的。
const 幾何 &imageGeometry_, const 幾何 &cropGeometry_ 
透明
const 顏色 &color_ 將 Alpha 圖像添加到圖像中,將與顏色匹配的像素設置為透明。
修剪
void 修剪圖像中背景顏色的邊緣。
反銳化遮罩
double radius_, double sigma_, double amount_, double threshold_ 使用反銳化遮罩演算法銳化影像。「radius_」參數以像素為單位指定高斯的半徑,不包含中心像素。「sigma_」參數以像素為單位指定高斯的標準差。「amount_」參數指定要加回原始影像的原始影像和模糊影像之間差異的百分比。「threshold_」參數指定套用差異量所需的像素閾值。
unsharpmaskChannel
const ChannelType channel_,const double radius_,const double sigma_,const double amount_,const double threshold_
使用反銳化遮罩演算法銳化影像通道。「channel_」參數指定要銳化的通道。radius_」參數以像素為單位指定高斯的半徑,不包含中心像素。「sigma_」參數以像素為單位指定高斯的標準差。「amount_」參數指定要加回原始影像的原始影像和模糊影像之間差異的百分比。「threshold_」參數指定套用差異量所需的像素閾值。
波浪
double amplitude_ = 25.0,double wavelength_ = 150.0 沿正弦波改變影像。
寫入
const string &imageSpec_ 使用檔名 imageSpec_ 將影像寫入檔案。
注意: 如果選擇的影像格式支援的顏色少於原始影像或已請求量化,則原始影像將量化為較少的顏色。如果這是個問題,請使用原始影像的副本。
Blob *blob_ 將影像寫入儲存在 blob_ 中的記憶體 BLOB。「magick_」參數指定要寫入的影像格式(預設為 magick)。「depth_」參數指定影像深度(預設為 depth)。
注意: 如果選擇的影像格式支援的顏色少於原始影像或已請求量化,則原始影像將量化為較少的顏色。如果這是個問題,請使用原始影像的副本。
Blob *blob_,std::string &magick_
Blob *blob_,std::string &magick_,size_t depth_
const ssize_t x_,const ssize_t y_,const size_t columns_,const size_t rows_,const std::string &map_,const StorageType type_,void *pixels_ 將像素資料寫入您提供的緩衝區。資料以「type_」參數指定的順序儲存為 char、short int、integer、float 或 double 格式。例如,我們想要以紅-綠-藍順序將 640x480 影像的掃描線 1 提取為字元資料

  image.write(0,0,640,1,"RGB",0,pixels);

參數如下
 

x_ 要提取區域最左側座標的水平座標。
y_ 要提取區域最頂部座標的垂直座標。
columns_ 要提取區域的像素寬度。
rows_ 要提取區域的像素高度。
map_ 此字元字串可以是 R = 紅色、G = 綠色、B = 藍色、A = alpha、C = 青色、Y = 黃色、M = 洋紅色和 K = 黑色的任意組合或順序。順序反映了所提供像素陣列中像素的順序。
type_ 像素存儲類型(CharPixel、ShortPixel、IntegerPixel、FloatPixel 或 DoublePixel)
pixels_ 此值陣列包含由 map_ 和 type_ 參數定義的像素分量。陣列的長度必須等於 width_ 和 height_ 值以及 type_ 參數所指定的區域。
調整大小
const Geometry &geometry_ 將影像調整為指定大小。

影像屬性

影像屬性透過 Image 中的方法設定和取得。除了接受指標引數的方法(例如 chromaBluePrimary)所有方法都按值傳回屬性。

影像屬性易於使用。例如,要將 TIFF 檔案「file.tiff」的解析度在水平和垂直方向上都設定為每英寸 150 點(DPI),您可以使用以下範例程式碼

string filename("file.tiff"); 
Image image; 
image.read(filename); 
image.resolutionUnits(PixelsPerInchResolution); 
image.density(Geometry(150,150));   // could also use image.density("150x150") 
image.write(filename)
下表顯示了支援的影像屬性和取得它們所需的方法引數
 
影像屬性
函數
類型
取得簽章
設定簽章
說明
相鄰
布林值 void bool flag_ 將影像合併為單一多影像檔案。
反鋸齒
布林值 void bool flag_ 控制渲染的 Postscript 和 Postscript 或 TrueType 字型的反鋸齒功能。預設為啟用。
動畫-
延遲
size_t(0 到 65535) void size_t delay_ 以 1/100 秒為單位的時間(0 到 65535),必須在動畫序列中顯示下一張圖像之前過時。此選項適用於調節 Netscape 中 GIF 圖像序列的動畫。
動畫-
迭代次數
size_t void size_t iterations_ 動畫循環的迭代次數(例如 Netscape 循環擴展)。
屬性
字串
const std::string name_
const std::string name_, const std::string value_ 任意命名的圖像屬性。可以將任意數量的命名屬性附加到圖像。例如,圖像註釋是一個名稱為「comment」的命名圖像屬性。EXIF 標籤作為命名屬性附加到圖像。使用語法「EXIF:<標籤>」來請求 EXIF 標籤,類似於「EXIF:DateTime」。
背景-
顏色
顏色 void const 顏色 &color_ 圖像背景顏色
背景-
紋理
字串 void const string &texture_ 要用作背景紋理的圖像文件名。不會修改圖像像素。
基礎列
size_t void   基礎圖像寬度(變換前)
基礎文件名
字串 void   基礎圖像文件名(變換前)
基礎行數
size_t void   基礎圖像高度(變換前)
邊框顏色
顏色 void  const 顏色 &color_ 圖像邊框顏色
邊界框
幾何 void   返回包含非邊框像素的最小邊界框。當區分像素時,將使用當前的模糊值。這是 crop(Geometry(0,0)) 使用的裁剪邊界框。
框顏色
顏色 void const 顏色 &boxColor_ 註釋文字在其上呈現的基礎顏色。
快取閾值 size_t   const size_t 以位元組為單位的像素快取閾值。一旦超過此閾值,所有後續像素快取操作都將在磁碟上進行。這是一個靜態方法,它設置的屬性由所有 Image 對象共享。
通道深度
size_t
const ChannelType channel_
const ChannelType channel_, const size_t depth_
通道模數深度。通道模數深度表示支持通道而不會丟失所需的最小位元數。如果請求的模數深度小於當前模數深度,則設置通道的模數深度會修改通道(即捨棄分辨率),否則通道不會更改。沒有與模數深度關聯的屬性,因此當前模數深度是通過檢查像素獲得的。因此,返回的深度可能小於最近設置的通道深度。後續的圖像處理可能會導致通道深度增加。
通道
size_t   const size_t 像素通道數。
色度-
藍原色
double x & y double *x_, double *y_ double x_, double y_ 色度藍原色點(例如 x=0.15,y=0.06)
色度-
綠原色
double x & y double *x_, double *y_ double x_, double y_ 色度綠原色點(例如 x=0.3,y=0.6)
色度-
紅原色
double x & y double *x_, double *y_ double x_, double y_ 色度紅原色點(例如 x=0.64,y=0.33)
色度-
白點
double x & y double*x_, double *y_ double x_, double y_ 色度白點(例如 x=0.3127,y=0.329)
類別類型
ClassType void  ClassType class_ 圖像存儲類別。請注意,從 DirectClass 圖像轉換為 PseudoClass 圖像可能會由於調色板大小有限(256 或 65535 種顏色)而導致顏色損失。
剪輯遮罩
圖像 void const Image &clipMask_ 將剪輯遮罩圖像與當前圖像關聯。剪輯遮罩圖像必須與當前圖像具有相同的尺寸,否則會引發異常。剪輯發生在剪輯遮罩圖像中像素透明的地方。剪輯傳遞無效的圖像以取消設置現有的剪輯遮罩。
顏色模糊
double void double fuzz_ 在這個距離內的顏色被認為是相等的。許多演算法會搜尋目標顏色。預設情況下,顏色必須完全一致。使用此選項可以匹配 RGB 空間中與目標顏色相近的顏色。
顏色映射表
顏色 size_t index_ size_t index_, const Color &color_ 顏色映射表索引處的顏色。
顏色映射表大小
size_t
void
size_t entries_
顏色映射表中的項目數量。設置顏色映射表大小可能會擴展或截斷顏色映射表。支持的最大項目數量由 MaxColormapSize 常數指定,並取決於編譯 ImageMagick 時 QuantumDepth 的值。如果請求的項目數量超過支持的數量,則會拋出異常。截斷顏色映射表時應格外小心,以確保圖像顏色映射表索引引用的是有效的顏色映射表項目。
色彩空間
色彩空間類型 colorSpace_ void 色彩空間類型 colorSpace_ 用於表示圖像像素顏色的色彩空間(例如 CMYK)。圖像像素始終存儲為 RGB(A),但 CMY(K) 除外。
列數
size_t void   圖像寬度
註釋
字串 void   圖像註釋
合成
合成運算符 void 合成運算符 compose_ 在隱式使用合成時(例如圖像拼合)要使用的合成運算符。
壓縮-
類型
壓縮類型 void 壓縮類型 compressType_ 圖像壓縮類型。默認為指定圖像文件的壓縮類型。
除錯
布林值 void bool flag_ 啟用在 ImageMagick 執行時打印內部除錯訊息。
定義值
字串
const std::string &magick_, const std::string &key_
const std::string &magick_, const std::string &key_,  const std::string &value_
設置或獲取在編碼或解碼指定格式時要應用的定義字符串。定義的含義特定於格式。格式由 magick_ 參數指定,特定於格式的鍵由 key_ 指定,關聯值由 value_ 指定。如果需要完全移除鍵,請參見 defineSet() 方法。
定義集
布林值
const std::string &magick_, const std::string &key_
const std::string &magick_, const std::string &key_, bool flag_
設置或獲取在編碼或解碼指定格式時要應用的定義標誌。 。類似於 defineValue() 方法,不同之處在於傳遞 flag_ 值「true」會使用該格式和鍵創建一個無值的定義。傳遞 flag_ 值「false」會移除任何現有的匹配定義。如果存在匹配的鍵,則該方法返回「true」,如果不存在匹配的鍵,則返回「false」。
密度
幾何  (默認 72x72) void const 幾何 &density_ 圖像的垂直和水平分辨率(以像素為單位)。此選項在解碼 Postscript 或 Portable Document 頁面時指定圖像密度。通常與 psPageSize 一起使用。
深度
 size_t (8-32) void size_t depth_ 圖像深度。用於在讀取或寫入 原始圖像時或在輸出格式支持多種深度時指定位深度。默認為編譯 ImageMagick 時的量子深度。
字節順序
字節順序類型 void 字節順序類型 endian_ 為支持它的格式指定(或獲取)字節順序選項。
目錄
字串 void   圖像蒙太奇中的圖塊名稱
文件
FILE * FILE * FILE *file_ 圖像文件描述符。
文件名
字串 void const string &fileName_ 圖像文件名。
文件大小
off_t void   圖像在磁盤上的字節數
填充顏色
顏色 void const Color &fillColor_ 用於填充繪製物件的顏色
fillPattern
圖像 void const Image &fillPattern_ 填充繪製物件時使用的圖案影像。
fillRule
FillRule void const Magick::FillRule &fillRule_ 填充繪製物件時使用的規則。
filterType
FilterTypes void FilterTypes filterType_ 調整影像大小時使用的濾鏡。使用的縮減濾鏡對調整影像大小所需的時間和產生的品質有顯著影響。預設濾鏡為 _Lanczos_,經證明在縮減大多數影像時能產生高品質的結果。
font
字串 void const string &font_ 文字渲染字體。如果字體是完整的 X 伺服器字體名稱,則從 X 伺服器取得字體。若要使用 TrueType 字體,請在 TrueType 檔案名稱前面加上 @。否則,請指定 Postscript 字體名稱(例如「helvetica」)。
fontPointsize
size_t void size_t pointSize_ 文字渲染字體點數
fontTypeMetrics
TypeMetric const std::string &text_, TypeMetric *metrics   使用指定的 _text_ 以及目前的 fontfontPointSize 設定,以字體類型指標更新指標。
format
字串 void   長格式影像格式描述。
伽瑪
double(典型範圍 0.8 到 2.3) void   影像的 Gamma 階級。由於顯示器差異,在兩個不同工作站上顯示的相同彩色影像可能會看起來不同。使用 Gamma 校正來調整此顏色差異。
geometry
幾何 void   編碼時影像的偏好大小。
gifDispose-
方法
size_t
{ 0 = 未指定處置方式,
1 = 不要處置圖形,
3 = 使用背景顏色覆寫圖形,
4 = 使用先前的圖形覆寫圖形。 }
void size_t disposeMethod_ GIF 處置方式。建立 GIF 動畫時,此選項用於控制如何渲染連續影格(如何處置前一個影格)。
iccColorProfile
Blob void const Blob &colorProfile_ ICC 色彩描述檔。透過 Blob 提供,因為 Magick++/ 和 ImageMagick 目前不直接支援格式化此資料結構。規格可從 國際色彩聯盟 取得,以了解 ICC 色彩描述檔的格式。
interlace-
類型
InterlaceType void InterlaceType interlace_ 交錯配置的類型(預設 _NoInterlace_)。此選項用於指定原始影像格式(例如 RGB 或 YUV)的交錯配置類型。_NoInterlace_ 表示不交錯,_LineInterlace_ 使用掃描線交錯,而 _PlaneInterlace_ 使用平面交錯。_PartitionInterlace_ 類似於 _PlaneInterlace_,不同之處在於不同的平面會儲存到個別的檔案(例如 image.R、image.G 和 image.B)。使用 _LineInterlace_ 或 _PlaneInterlace_ 來建立交錯的 GIF 或漸進式 JPEG 影像。
iptcProfile
Blob void const Blob & iptcProfile_ IPTC 描述檔。透過 Blob 提供,因為 Magick++ 和 ImageMagick 目前不直接支援格式化此資料結構。規格可從 國際新聞電訊委員會 取得,以了解 IPTC 描述檔。
label
字串 void const string &label_ 影像標籤
magick
字串 void  const string &magick_ 取得影像格式(例如「GIF」)
alpha
const bool void const bool alphaFlag_ 影像支援透明度(Alpha 色板)
matteColor
顏色 void const Color &matteColor_ 影像遮罩(影格)顏色
meanError-
PerPixel
double void   影像色彩縮減時計算的每個像素平均誤差。僅當 verbose 設定為 true 且影像剛才已量化時,此參數才有效。
modulusDepth
size_t
void
size_t depth_
影像模數深度(支援紅/綠/藍色分量而不損失精度的最小位元數)。像素模數深度可以通過提供一個小於當前值的數值來降低,將像素(降低精度)更新到新的深度。使用此方法無法將像素模數深度增加到超過當前值。
單色
布林值 void bool flag_ 將影像轉換為黑白
蒙太奇-
幾何
幾何 void   影像蒙太奇中的區塊大小和偏移量。僅適用於蒙太奇影像。
正規化-
最大誤差
double void   影像色彩減少時計算的每個像素正規化最大誤差。僅當 verbose 設定為 true 且影像剛被量化時,此參數才有效。
正規化-
平均誤差
double void   影像色彩減少時計算的每個像素正規化平均誤差。僅當 verbose 設定為 true 且影像剛被量化時,此參數才有效。
方向
方向類型 void
方向類型 orientation_ 影像方向。 某些檔案格式支援,例如 DPX 和 TIFF。可用於將影像旋轉到正確的方向。
封包
size_t void   影像中
的遊程編碼封包數量
封包大小
size_t void   每個像素封包中的位元組數
頁面
幾何 void const 幾何 &pageSize_ 影像畫布的偏好大小和位置。

使用此選項以每英寸點數指定 Postscript 頁面的尺寸和位置,或以像素為單位指定 TEXT 頁面的尺寸和位置。此選項通常與 密度 結合使用。

頁面也可以用於定位 GIF 影像(例如動畫中的場景)

像素顏色
顏色 ssize_t x_, ssize_t y_ ssize_t x_, ssize_t y_, const 顏色 &color_ 取得/設定位置 x 和 y 處的像素顏色。
設定檔
Blob
const std::string name_
const std::string name_, const Blob &colorProfile_
取得/設定/移除 命名的設定檔 。有效名稱包括 "*", "8BIM", "ICM", "IPTC",或使用者/格式定義的設定檔名稱。
品質
size_t(0 到 100) void size_t quality_ JPEG/MIFF/PNG 壓縮等級(預設值 75)。
量化-
色彩
size_t void size_t colors_ 影像中的偏好色彩數。影像中的實際色彩數可能少於您的請求,但絕不會超過。唯一色彩數少於使用此選項指定的色彩數的影像,將會移除任何重複或未使用的色彩。
量化-
色彩空間
色彩空間類型 void 色彩空間類型 colorSpace_ 用於量化色彩的色彩空間(預設為 RGB)。經驗證據表明,YUV 或 YIQ 等色彩空間中的距離比 RGB 空間中的距離更符合感知色彩差異。這些色彩空間在減少影像色彩時可能會產生更好的結果。
量化-
抖動
布林值 void bool flag_ 對影像應用 Floyd/Steinberg 誤差擴散。抖動的基本策略是通過平均多個相鄰像素的強度來交換強度解析度以獲得空間解析度。減少色彩時出現嚴重輪廓化的影像可以使用此選項進行改善。必須設定 quantizeColors 或 monochrome 選項才能使此選項生效。
量化-
樹深度
size_t  void size_t treeDepth_ 量化色彩分類樹的深度。值 0 或 1 允許為色彩簡化演算法選擇最佳樹深度。值介於 2 和 8 之間可用於手動調整樹深度。
渲染-
意圖
渲染意圖 void RenderingIntent render_ 渲染意圖類型
解析度-
單位
ResolutionType void ResolutionType units_ 影像解析度的單位
列數
size_t void   影像中的像素列數
場景
size_t void size_t scene_ 影像場景編號
簽章
字串 bool force_ = false   影像 MD5 簽章。將 force_ 設定為「true」以強制重新計算簽章。
大小
幾何 void const Geometry &geometry_ 原始影像(不支援寬度和高度資訊的影像)的寬度和高度。大小也可用於影響從多分辨率格式(例如 Photo CD、JBIG 或 JPEG)讀取的影像大小。
剝離
void 剝離影像的所有配置文件和註釋。
筆畫反鋸齒
布林值 void bool flag_ 繪製物件輪廓時啟用或停用反鋸齒。
筆畫顏色
顏色 void const Color &strokeColor_ 繪製物件輪廓時要使用的顏色
筆畫虛線偏移
size_t void double strokeDashOffset_ 使用虛線樣式繪製時,指定到虛線樣式的距離以開始虛線(預設值為 0)。
筆畫虛線陣列
const double* void const double* strokeDashArray_ 指定用於筆畫路徑的虛線和間隙樣式。strokeDashArray 表示一個以零結尾的數字陣列,這些數字以使用者單位指定交替虛線和間隙的長度(以像素為單位)。如果提供了奇數個值,則重複值列表以產生偶數個值。典型的 strokeDashArray_ 陣列可能包含成員 5 3 2 0,其中零值表示樣式陣列的結尾。
筆畫線條端點樣式
LineCap void LineCap lineCap_ 指定在筆畫路徑(或其他向量形狀)的角落處使用的形狀。LineJoin 的值為 UndefinedJoin、MiterJoin、RoundJoin 和 BevelJoin。
筆畫線條連接樣式
LineJoin void LineJoin lineJoin_ 指定在筆畫路徑(或其他向量形狀)的角落處使用的形狀。LineJoin 的值為 UndefinedJoin、MiterJoin、RoundJoin 和 BevelJoin。
筆畫斜接限制
size_t void size_t miterLimit_ 指定斜接限制。當兩條線段以銳角相交且已為「lineJoin」指定斜接連接時,斜接可能會遠遠超出筆畫路徑的線條粗細度。miterLimit' 對斜接長度與「lineWidth」的比率施加限制。此參數的預設值為 4。
筆畫寬度
double void double strokeWidth_ 繪製向量物件時使用的筆畫寬度(預設為 1)
筆畫樣式
圖像 void const Image &strokePattern_ 繪製物件筆畫(輪廓)時要使用的樣式影像。
子影像
size_t void size_t subImage_ 影像序列的子影像
子範圍
size_t void size_t subRange_ 相對於基礎影像的影像數量
文字編碼
字串
void
const std::string &encoding_
指定用於文字註解的代碼集。目前唯一可以指定的字元編碼是「UTF-8」,用於將 Unicode 表示為位元組序列。指定空字串以使用預設的 ASCII 編碼。使用 Unicode 成功進行文字註解可能需要設計用於支援 Unicode 的字體。
區塊名稱
字串 void const string &tileName_ 區塊名稱
總顏色數
size_t void   影像中的顏色數量
類型
ImageType void ImageType 影像類型。
詳細資訊
布林值 void bool verboseFlag_ 列印有關影像的詳細資訊
檢視
字串 void const string &view_ FlashPix 檢視參數。
虛擬像素方法
VirtualPixelMethod void VirtualPixelMethod virtualPixelMethod_ 影像虛擬像素方法。
x11 顯示
字串(例如「主機名稱:0.0」) void const string &display_ 要顯示、獲取字體或擷取影像的 X11 顯示
x 解析度
double void   影像的 x 解析度
y 解析度
double void   影像的 y 解析度

低階影像像素存取

影像像素(類型為 Quantum )可以透過 影像像素快取 直接存取。  影像像素快取是實際影像像素(可能在記憶體中、從磁碟檔案記憶體映射或完全在磁碟上)的矩形視窗。有兩個介面可以存取 影像像素快取。 這裡描述的介面(Image 類別的一部分)一次只支援一個檢視。如需支援同時像素檢視(最多可達列數)的更抽象介面,請參閱 Pixels 類別。以此做為比喻,這裡描述的介面與 Pixels 類別的關係就像 stdio 的 gets() 與 fgets() 的關係。 Pixels 類別提供更通用的介面形式。

透過 getPixels() 取得現有的影像像素。使用 setPixels() 建立新的像素區域。

為了確保只修改當前世代的影像,應該呼叫 Image 的 modifyImage() 方法,將基礎影像的引用計數減少為 1。如果沒有這樣做,則可能會因為在複製或建構 Image 時使用引用計數而修改先前世代的影像。

根據作業系統的功能以及視窗與影像的關係,像素快取可能是所選視窗中像素的副本,也可能是實際的影像像素。在任何情況下,呼叫 syncPixels() 都可以確保使用修改後的像素快取內容更新基礎影像。 readPixels() 方法支援根據 QuantumTypes 將外部像素資料格式複製到像素快取中。writePixels() 方法支援根據 QuantumTypes 指定的格式將快取中的像素複製到外部像素表示。

像素區域實際上是一個小影像,可以在其中存取、定址和更新像素,如下例所示

cache

Image image("cow.png"); 
// Ensure that there are no other references to this image.
image.modifyImage();
// Set the image type to TrueColor DirectClass representation.
image.type(TrueColorType);
// Request pixel region with size 60x40, and top origin at 20x30 
ssize_t columns = 60; 
Quantum *pixel_cache = image.getPixels(20,30,columns,40); 
// Set pixel at column 5, and row 10 in the pixel cache to red. 
ssize_t column = 5; 
ssize_t row = 10; 
Quantum *pixel = pixel_cache+row*columns+column; 
*pixel = Color("red"); 
// Save changes to underlying image .
image.syncPixels();
  // Save updated image to file.
image.write("horse.png");

影像快取支援以下方法
 

影像快取方法
方法
傳回值
簽章
說明
getConstPixels
const Quantum * const ssize_t x_, const ssize_t y_, const size_t columns_, const size_t rows_ 將像素從影像傳輸到由指定矩形區域定義的像素快取。 傳回的指標在下次呼叫 getPixel、getConstPixels 或 setPixels 之前一直有效,並且永遠不應由使用者釋放。
getConstMetacontent
const void* void 傳回指向先前getPixel()、getConstPixels() 或 setPixels() 呼叫對應的影像像素中繼內容的指標。  傳回的指標在下次呼叫 getPixel、getConstPixels 或 setPixels 之前一直有效,並且永遠不應由使用者釋放。像素中繼內容表示一個 void 類型的陣列,每個項目對應於一個 x,y 像素位置。
getMetacontent
void* void 傳回指向由最後一次 getConstPixelsgetPixelssetPixels 呼叫請求的像素區域對應的影像像素中繼內容的指標。傳回的指標在下次呼叫 getPixel、getConstPixels 或 setPixels 之前一直有效,並且永遠不應由使用者釋放。
getPixels
Quantum * const ssize_t x_, const ssize_t y_, const size_t columns_, const size_t rows_ 將像素從影像傳輸到由指定矩形區域定義的像素快取。修改後的像素隨後可以透過 syncPixels 傳輸回影像。傳回的指標在下次呼叫 getPixel、getConstPixels() 或 setPixels() 之前一直有效,並且永遠不應由使用者釋放。
setPixels
Quantum * const ssize_t x_, const ssize_t y_, const size_t columns_, const size_t rows_ 配置像素快取區域以儲存由區域矩形定義的影像像素。  該區域隨後會透過 syncPixels 從像素快取傳輸到影像。 傳回的指標在下次呼叫 getPixel、getConstPixels 或 setPixels 之前一直有效,並且永遠不應由使用者釋放。
syncPixels
void void 將影像快取像素傳輸到影像。
readPixels
void QuantumTypes quantum_, unsigned char *source_ 將一個或多個像素組成部分從緩衝區或文件傳輸到圖像的像素緩存中。ReadPixels 通常用於支持圖像解碼器。傳輸的區域對應於先前 setPixels 調用設置的區域。
writePixels
void QuantumTypes quantum_, unsigned char *destination_ 將一個或多個像素組成部分從圖像像素緩存傳輸到緩衝區或文件。WritePixels 通常用於支持圖像編碼器。傳輸的區域對應於先前 getPixels 或 getConstPixels 調用設置的區域。