檢視原始碼 wxImage (wx v2.4.3)
這個類別封裝了一個與平台無關的影像。
影像可以從資料建立,或使用 wxBitmap:convertToImage/1
。影像可以從各種格式的檔案載入,並且可以透過影像格式處理器擴充以支援新的格式。可以使用函式來設定和取得影像位元,因此可以用於基本的影像操作。
wxImage
目前無法直接繪製到 wxDC
。相反地,必須使用 wxBitmap::wxBitmap(wxImage,int depth) 建構子從它建立一個平台特定的 wxBitmap
物件。然後可以使用 wxDC:drawBitmap/4
將此點陣圖繪製到裝置上下文。
關於 wxImage
和 wxBitmap
之間差異的更多資訊:wxImage
只是 RGB 位元組的緩衝區,帶有可選的 Alpha 位元組緩衝區。它是通用的、與平台無關的且與影像檔案格式無關的程式碼。它包含用於縮放、調整大小、剪裁和其他影像資料操作的通用程式碼。另一方面,wxBitmap
旨在作為任何原生影像格式的包裝,該格式可以最快/最容易地繪製到 DC 或作為在 wxMemoryDC
上執行繪圖操作的目標。透過像這樣拆分 wxImage/wxBitmap 之間的責任,就可以更容易地使用所有平台和影像類型共用的通用程式碼進行通用操作,並在需要效能或相容性的地方使用平台特定的程式碼。
影像的一種顏色值可以用作遮罩顏色,這將導致自動建立與點陣圖物件相關聯的 wxMask
物件。
Alpha 通道支援
從 wxWidgets 2.5.0 開始,wxImage
支援 Alpha 通道資料,也就是說,除了每個像素的紅色、綠色和藍色顏色成分的位元組之外,它還儲存一個代表像素不透明度的位元組。
Alpha 值 0 對應於透明像素(空不透明度),而值 255 表示像素為 100% 不透明。常數 ?wxIMAGE_ALPHA_TRANSPARENT 和 ?wxIMAGE_ALPHA_OPAQUE 可以用更可讀的形式表示這些值。
雖然所有影像都有 RGB 資料,但並非所有影像都有 Alpha 通道。在使用 getAlpha/3
之前,您應該使用 hasAlpha/1
檢查此影像是否包含 Alpha 通道。目前,BMP、PNG、TGA 和 TIFF 格式處理器具有完整的 Alpha 通道載入支援,因此如果您想使用 Alpha,則必須使用其中一種格式。如果您使用 setAlpha/4
自己初始化影像 Alpha 通道,則應將其儲存為 PNG、TGA 或 TIFF 格式,以避免遺失它,因為這些是目前唯一支援使用 Alpha 儲存的處理器。
可用的影像處理器
提供以下影像處理器。wxBMPHandler 預設會始終安裝。若要使用其他影像格式,請使用 wxImage::AddHandler
(未在 wx 中實作)安裝適當的處理器,或呼叫 ?wxInitAllImageHandlers()。
wxBMPHandler:用於載入(包括 Alpha 支援)和儲存,始終安裝。
wxPNGHandler
(未在 wx 中實作):用於載入和儲存。包含 Alpha 支援。wxJPEGHandler
(未在 wx 中實作):用於載入和儲存。wxGIFHandler
(未在 wx 中實作):用於載入和儲存(請參閱下文)。wxPCXHandler
(未在 wx 中實作):用於載入和儲存(請參閱下文)。wxPNMHandler
(未在 wx 中實作):用於載入和儲存(請參閱下文)。wxTIFFHandler
(未在 wx 中實作):用於載入和儲存。包含 Alpha 支援。wxTGAHandler
(未在 wx 中實作):用於載入和儲存。包含 Alpha 支援。wxIFFHandler
(未在 wx 中實作):僅用於載入。wxXPMHandler
(未在 wx 中實作):用於載入和儲存。wxICOHandler:用於載入和儲存。
wxCURHandler:用於載入和儲存。
wxANIHandler:僅用於載入。
以 PCX 格式儲存時,wxPCXHandler
(未在 wx 中實作)將計算影像中不同顏色的數量;如果顏色少於或等於 256 種,則會儲存為 8 位元,否則會儲存為 24 位元。
載入 PNM 僅適用於 ASCII 或原始 RGB 影像。以 PNM 格式儲存時,wxPNMHandler
(未在 wx 中實作)將始終儲存為原始 RGB。
儲存 GIF 需要最大 8 bpp 的影像(請參閱 wxQuantize
(未在 wx 中實作)),並將 Alpha 通道轉換為遮罩(請參閱 convertAlphaToMask/5
)。儲存動畫 GIF 需要大小相同的影像(請參閱 wxGIFHandler::SaveAnimation
(未在 wx 中實作))
預定義的物件(包含 wx.hrl):?wxNullImage
請參閱
?wxInitAllImageHandlers()
wxWidgets 文件:wxImage
摘要
函式
以指定的像素 blurRadius
在水平和垂直方向模糊影像。
僅在水平方向模糊影像。
僅在垂直方向模糊影像。
如果影像有 Alpha 通道,此方法會將其轉換為遮罩。
如果影像有 Alpha 通道,此方法會使用指定的顏色作為遮罩顏色將其轉換為遮罩。
傳回影像的灰階版本。
傳回影像的單色版本。
傳回此影像的完全相同副本。
這是一個為了方便而提供的多載成員函式。它與上述函式的不同之處僅在於它接受的引數。
這是一個為了方便而提供的多載成員函式。它與上述函式的不同之處僅在於它接受的引數。
建立一個新的影像。
銷毀影像資料。
銷毀物件
尋找影像中從未使用過的第一個顏色。
傳回儲存此影像 Alpha 值的陣列的指標。
傳回給定像素位置的 Alpha 值。
傳回給定座標的藍色強度。
傳回影像資料作為陣列。
傳回給定座標的綠色強度。
取得影像的高度(以像素為單位)。
如果影像檔案包含多個影像且影像處理器能夠單獨擷取這些影像,則此函式會傳回可用的影像數量。
迭代所有已註冊的 wxImageHandler
(未在 wx 中實作)物件,並傳回一個字串,其中包含適用於傳遞至檔案開啟/儲存對話方塊的檔案副檔名遮罩。
取得遮罩顏色的藍色值。
取得遮罩顏色的綠色值。
取得遮罩顏色的紅色值。
取得使用者定義的字串值選項。
取得使用者定義的整數值選項。
取得目前的遮罩顏色或尋找可用作遮罩顏色的合適未使用顏色。
傳回與影像相關聯的調色盤。
傳回給定座標的紅色強度。
傳回目前影像的子影像,只要矩形完全屬於影像。
取得影像的寬度(以像素為單位)。
如果此影像有 Alpha 通道,則傳回 true,否則傳回 false。
如果存在作用中的遮罩,則傳回 true,否則傳回 false。
如果存在給定的選項,則傳回 true。
初始化影像 Alpha 通道資料。
僅限內部使用。
如果存在影像資料,則傳回 true。
如果給定的像素是透明的,則傳回 true,即如果此影像有遮罩,則具有遮罩顏色,或者如果此影像有 Alpha 通道且此像素的 Alpha 值嚴格小於 threshold
。
從檔案載入影像。
從檔案載入影像。
傳回影像的鏡像副本。
這是一個為了方便而提供的多載成員函式。它與上述函式的不同之處僅在於它接受的引數。
這是一個為了方便而提供的多載成員函式。它與上述函式的不同之處僅在於它接受的引數。
從記憶體中的資料建立影像。
尋找具有給定名稱的處理器,並將其移除。
將 r1
,g1,b1 指定的顏色取代為顏色 r2
,g2,b2。
透過縮放來就地變更影像的大小:呼叫此函式後,影像將具有給定的寬度和高度。
透過添加具有給定顏色的邊框或在必要時裁剪來就地變更影像的大小,而不進行縮放。
傳回一個影像的副本,該影像會依 clockwise
所指示的方向旋轉 90 度。
將影像繞著給定的點旋轉,角度為 angle
弧度。
將影像中每個像素的色相旋轉 angle
,該值為 -1.0 到 +1.0 範圍內的雙精度浮點數,其中 -1.0 對應於 -360 度,+1.0 對應於 +360 度。
將影像儲存到指定名稱的檔案中。
將影像儲存到指定名稱的檔案中。
傳回影像的縮放版本。
此函數與 setData/4
類似,並具有相似的限制。
設定指定像素的 alpha 值。
設定影像資料,而不執行檢查。
這是一個為了方便而提供的多載成員函式。它與上述函式的不同之處僅在於它接受的引數。
指定是否有遮罩。
設定此影像的遮罩顏色 (並告知影像使用遮罩)。
設定影像的遮罩,使得在遮罩中 RGB 值為 mr、mg、mb 的像素將會在影像中被遮罩。
設定使用者定義的選項。
將調色盤與影像關聯。
設定給定矩形內像素的顏色。
設定指定 x 和 y 座標處的像素顏色。
傳回此影像的調整大小版本,而不會通過添加具有給定顏色的邊框或根據需要裁剪來縮放它。
類型
-type wxImage() :: wx:wx_object().
函式
以指定的像素 blurRadius
在水平和垂直方向模糊影像。
當使用單一遮罩顏色進行透明處理時,不應使用此方法。
請參閱
-spec blurHorizontal(This, BlurRadius) -> wxImage() when This :: wxImage(), BlurRadius :: integer().
僅在水平方向模糊影像。
當使用單一遮罩顏色進行透明處理時,不應使用此方法。
請參閱
僅在垂直方向模糊影像。
當使用單一遮罩顏色進行透明處理時,不應使用此方法。
請參閱
-spec convertAlphaToMask(This, [Option]) -> boolean() when This :: wxImage(), Option :: {threshold, integer()}.
如果影像有 Alpha 通道,此方法會將其轉換為遮罩。
如果影像具有 alpha 通道,則所有 alpha 值小於 threshold
的像素都會被遮罩顏色取代,並且會移除 alpha 通道。否則不執行任何操作。
遮罩顏色會使用 findFirstUnusedColour/2
自動選擇,如果這不適合,請參閱下面的多載。
傳回值:成功則傳回 true,錯誤則傳回 false。
-spec convertAlphaToMask(This, Mr, Mg, Mb, [Option]) -> boolean() when This :: wxImage(), Mr :: integer(), Mg :: integer(), Mb :: integer(), Option :: {threshold, integer()}.
如果影像有 Alpha 通道,此方法會使用指定的顏色作為遮罩顏色將其轉換為遮罩。
如果影像具有 alpha 通道,則所有 alpha 值小於 threshold
的像素都會被遮罩顏色取代,並且會移除 alpha 通道。否則不執行任何操作。
自:2.9.0
傳回值:成功則傳回 true,錯誤則傳回 false。
傳回影像的灰階版本。
自:2.9.0
-spec convertToGreyscale(This, Weight_r, Weight_g, Weight_b) -> wxImage() when This :: wxImage(), Weight_r :: number(), Weight_g :: number(), Weight_b :: number().
傳回影像的灰階版本。
傳回的影像使用原始影像的亮度分量來計算灰階。預設在轉換為 YUV 時使用標準 ITU-T BT.601,其中每個像素等於 (R weight_r
) + (G weight_g
) + (B * weight_b
)。
-spec convertToMono(This, R, G, B) -> wxImage() when This :: wxImage(), R :: integer(), G :: integer(), B :: integer().
傳回影像的單色版本。
傳回的影像在原始影像具有 (r,g,b) 顏色的位置為白色,其他位置為黑色。
傳回此影像的完全相同副本。
等同於 create(This, Sz, [])
。
-spec create(This, Width, Height) -> boolean() when This :: wxImage(), Width :: integer(), Height :: integer(); (This, Sz, Data) -> boolean() when This :: wxImage(), Sz :: {W :: integer(), H :: integer()}, Data :: binary(); (This, Sz, [Option]) -> boolean() when This :: wxImage(), Sz :: {W :: integer(), H :: integer()}, Option :: {clear, boolean()}.
這是一個為了方便而提供的多載成員函式。它與上述函式的不同之處僅在於它接受的引數。
-spec create(This, Width, Height, Data) -> boolean() when This :: wxImage(), Width :: integer(), Height :: integer(), Data :: binary(); (This, Width, Height, [Option]) -> boolean() when This :: wxImage(), Width :: integer(), Height :: integer(), Option :: {clear, boolean()}; (This, Sz, Data, Alpha) -> boolean() when This :: wxImage(), Sz :: {W :: integer(), H :: integer()}, Data :: binary(), Alpha :: binary().
這是一個為了方便而提供的多載成員函式。它與上述函式的不同之處僅在於它接受的引數。
-spec create(This, Width, Height, Data, Alpha) -> boolean() when This :: wxImage(), Width :: integer(), Height :: integer(), Data :: binary(), Alpha :: binary().
建立一個新的影像。
有關更多資訊,請參閱 new/4
。
傳回值:如果呼叫成功則為 true,否則為 false。
-spec 'Destroy'(This) -> ok when This :: wxImage().
銷毀影像資料。
-spec destroy(This :: wxImage()) -> ok.
銷毀物件
-spec findFirstUnusedColour(This, [Option]) -> Result when Result :: {Res :: boolean(), R :: integer(), G :: integer(), B :: integer()}, This :: wxImage(), Option :: {startR, integer()} | {startG, integer()} | {startB, integer()}.
尋找影像中從未使用過的第一個顏色。
搜尋從給定的初始顏色開始,並以 1 遞增 R、G 和 B 分量 (依此順序),直到找到未使用的顏色或顏色空間耗盡為止。
參數 r
、g
、b
是指向變數的指標,用於儲存顏色。
參數 startR
、startG
、startB
定義顏色的初始值。傳回的顏色將具有等於或大於這些值的 RGB 值。
傳回值:如果沒有剩餘未使用的顏色則傳回 false,成功則傳回 true。
注意:此方法涉及計算直方圖,這是一個計算密集型操作。
傳回儲存此影像 Alpha 值的陣列的指標。
對於沒有 alpha 通道的影像,此指標為 NULL。如果影像確實有 alpha 通道,則可以使用此指標直接操作儲存為 RGB 值的 alpha 值。
傳回給定像素位置的 Alpha 值。
傳回給定座標的藍色強度。
傳回影像資料作為陣列。
這最常用於直接影像操作。傳回值指向一個字元陣列,格式為 RGBRGBRGB...,順序由上到下、由左到右,也就是第一個 RGB 三元組對應於第一行的第一個像素,第二個對應於第一行的第二個像素,依此類推,直到第一行結尾,然後是第二行,依此類推。
您不應刪除傳回的指標,也不應將其傳遞給 setData/4
。
傳回給定座標的綠色強度。
取得影像的高度(以像素為單位)。
請參閱:getWidth/1
-spec getImageCount(Filename) -> integer() when Filename :: unicode:chardata().
-spec getImageCount(Filename, [Option]) -> integer() when Filename :: unicode:chardata(), Option :: {type, wx:wx_enum()}.
如果影像檔案包含多個影像且影像處理器能夠單獨擷取這些影像,則此函式會傳回可用的影像數量。
對於採用參數 filename
的多載,這是要查詢的檔案名稱。對於採用參數 stream
的多載,這是具有影像資料的已開啟輸入串流。
有關更多資訊,請參閱 wxImageHandler::GetImageCount()
(在 wx 中未實作)。
參數 type
可以是以下值之一
wxBITMAP_TYPE_BMP:載入 Windows 位圖檔案。
wxBITMAP_TYPE_GIF:載入 GIF 位圖檔案。
wxBITMAP_TYPE_JPEG:載入 JPEG 位圖檔案。
wxBITMAP_TYPE_PNG:載入 PNG 位圖檔案。
wxBITMAP_TYPE_PCX:載入 PCX 位圖檔案。
wxBITMAP_TYPE_PNM:載入 PNM 位圖檔案。
wxBITMAP_TYPE_TIFF:載入 TIFF 位圖檔案。
wxBITMAP_TYPE_TGA:載入 TGA 位圖檔案。
wxBITMAP_TYPE_XPM:載入 XPM 位圖檔案。
wxBITMAP_TYPE_ICO:載入 Windows 圖示檔案 (ICO)。
wxBITMAP_TYPE_CUR:載入 Windows 指標檔案 (CUR)。
wxBITMAP_TYPE_ANI:載入 Windows 動畫指標檔案 (ANI)。
wxBITMAP_TYPE_ANY:將嘗試自動偵測格式。
傳回值:可用的影像數量。對於大多數影像處理常式,此值為 1 (例外情況是 TIFF 和 ICO 格式以及動畫 GIF,此函數會傳回動畫中的影格數)。
-spec getImageExtWildcard() -> unicode:charlist().
迭代所有已註冊的 wxImageHandler
(未在 wx 中實作)物件,並傳回一個字串,其中包含適用於傳遞至檔案開啟/儲存對話方塊的檔案副檔名遮罩。
傳回值:傳回的字串格式為 "(*.ext1;*.ext2)|*.ext1;*.ext2"
。通常最好在將結果傳遞給對話方塊之前加上描述。範例
取得遮罩顏色的藍色值。
取得遮罩顏色的綠色值。
取得遮罩顏色的紅色值。
-spec getOption(This, Name) -> unicode:charlist() when This :: wxImage(), Name :: unicode:chardata().
取得使用者定義的字串值選項。
通用選項
wxIMAGE_OPTION_FILENAME:
從中載入影像的檔案名稱。
特定於 wxGIFHandler
的選項 (在 wx 中未實作)
wxIMAGE_OPTION_GIF_COMMENT:
從 GIF 檔案讀取或寫入到 GIF 檔案的註解文字。在動畫 GIF 中,每個影格都可以有自己的註解。如果 GIF 的第一個影格中只有一個註解,則不會在其他影格中重複。
傳回值:如果找不到選項則傳回選項的值或空字串。如果空字串可以是有效的選項值,請使用 hasOption/2
。
請參閱
-spec getOptionInt(This, Name) -> integer() when This :: wxImage(), Name :: unicode:chardata().
取得使用者定義的整數值選項。
此函數對於 name
不區分大小寫。如果指定的選項不存在,則函數傳回 0。如果 0 可能是該選項的有效值,請使用 hasOption/2
。
通用選項
wxIMAGE_OPTION_MAX_WIDTH
和wxIMAGE_OPTION_MAX_HEIGHT:
如果指定了這些選項中的任何一個,則載入的影像將會縮小 (保持其長寬比),使其寬度小於給定的最大寬度 (如果它不是 0),且
其高度小於給定的最大高度 (如果它不是 0)。這通常用於載入縮圖,並且與在載入後呼叫rescale/4
相比,使用這些選項的優點是某些處理常式 (目前僅有 JPEG 處理常式) 支援在載入期間縮放影像,這比載入整個巨大影像然後再縮放要高效得多 (如果處理常式不支援這些選項,這仍然會發生)。這些選項必須在呼叫loadFile/4
之前設定才能生效。wxIMAGE_OPTION_ORIGINAL_WIDTH
和wxIMAGE_OPTION_ORIGINAL_HEIGHT:
如果指定了wxIMAGE_OPTION_MAX_WIDTH
或wxIMAGE_OPTION_MAX_HEIGHT
,這些選項將傳回影像的原始大小。
自:2.9.3
wxIMAGE_OPTION_QUALITY:
儲存時使用的 JPEG 品質。這是一個介於 0..100 之間的整數,其中 0 表示非常差,100 表示優秀 (但壓縮非常差)。此選項目前會忽略其他格式。wxIMAGE_OPTION_RESOLUTIONUNIT:
此選項的值決定影像的解析度是以公分還是英吋指定,請參閱 wxImageResolution 列舉元素。wxIMAGE_OPTION_RESOLUTION
、wxIMAGE_OPTION_RESOLUTIONX
和wxIMAGE_OPTION_RESOLUTIONY:
這些選項使用對應於wxIMAGE_OPTION_RESOLUTIONUNIT
選項值的單位來定義影像的解析度。可以在儲存影像之前設定第一個選項,以將水平和垂直解析度設定為相同的值。如果影像處理常式支援影像解析度 (目前 BMP、JPEG 和 TIFF 處理常式支援),並且影像提供解析度資訊,則會由影像處理常式設定 X 和 Y 選項,並且可以在載入影像後查詢。
特定於 wxPNGHandler
的選項 (在 wx 中未實作)
wxIMAGE_OPTION_PNG_FORMAT:
用於儲存 PNG 檔案的格式,請參閱 wxImagePNGType 以取得支援的值。wxIMAGE_OPTION_PNG_BITDEPTH:
每個通道 (R/G/B/A) 的位元深度。wxIMAGE_OPTION_PNG_FILTER:
用於儲存 PNG 檔案的篩選器,請參閱 libpng (http://www.libpng.org/pub/png/libpng-1.2.5-manual.html) 以取得可能的值 (例如 PNG_FILTER_NONE、PNG_FILTER_SUB、PNG_FILTER_UP 等)。wxIMAGE_OPTION_PNG_COMPRESSION_LEVEL:
用於儲存 PNG 檔案的壓縮層級 (0..9)。較高的值會建立較小但較慢的 PNG 檔案。請注意,與其他格式 (例如 JPEG) 不同,PNG 格式始終是無損的,因此此壓縮層級不會犧牲影像品質。wxIMAGE_OPTION_PNG_COMPRESSION_MEM_LEVEL:
用於儲存 PNG 檔案的壓縮記憶體使用層級 (1..9)。較高的值表示儲存過程會消耗更多記憶體,但可能會建立較小的 PNG 檔案。wxIMAGE_OPTION_PNG_COMPRESSION_STRATEGY:
可能的值為 0 表示預設策略,1 表示篩選器,2 表示僅限霍夫曼。您可以使用 OptiPNG (http://optipng.sourceforge.net/) 來取得適合您應用程式的值。wxIMAGE_OPTION_PNG_COMPRESSION_BUFFER_SIZE:
儲存 PNG 檔案時的內部緩衝區大小(以位元組為單位)。理想情況下,它應該與生成的 PNG 檔案一樣大。如果您的應用程式產生的圖片大小變化不大,請使用此選項。
針對 wxTIFFHandler
的特定選項(在 wx 中未實作)
wxIMAGE_OPTION_TIFF_BITSPERSAMPLE:
每個取樣(通道)的位元數。目前支援 1 和 8 的值。值為 1 會產生黑白影像。值為 8(預設值)可能表示灰階或 RGB,具體取決於wxIMAGE_OPTION_TIFF_SAMPLESPERPIXEL
的值。wxIMAGE_OPTION_TIFF_SAMPLESPERPIXEL:
每個像素的取樣(通道)數。目前支援 1 和 3 的值。值為 1 會產生灰階(預設值)或黑白影像,具體取決於wxIMAGE_OPTION_TIFF_BITSPERSAMPLE
的值。值為 3(預設值)將產生 RGB 影像。wxIMAGE_OPTION_TIFF_COMPRESSION:
壓縮類型。預設值設為 1 (COMPRESSION_NONE)。其他常見值為 5 (COMPRESSION_LZW) 和 7 (COMPRESSION_JPEG)。請參閱 tiff.h 以取得更多選項。wxIMAGE_OPTION_TIFF_PHOTOMETRIC:
指定光度解釋。預設值對於 RGB 影像設為 2 (PHOTOMETRIC_RGB),對於灰階或黑白影像設為 0 (PHOTOMETRIC_MINISWHITE)。它也可以設為 1 (PHOTOMETRIC_MINISBLACK),將最低值視為黑色,最高值視為白色。如果您想要灰階影像,僅指定wxIMAGE_OPTION_TIFF_PHOTOMETRIC
並將其設為 PHOTOMETRIC_MINISWHITE 或 PHOTOMETRIC_MINISBLACK 即可。其他值會自動處理。
特定於 wxGIFHandler
的選項 (在 wx 中未實作)
wxIMAGE_OPTION_GIF_TRANSPARENCY:
如何處理透明像素。預設情況下,透明像素的顏色會更改為亮粉紅色,這樣如果意外繪製沒有透明度的影像,會很明顯。通常,這不會被注意到,因為這些像素不會被渲染。但在某些情況下,載入 GIF 時不對其顏色進行任何修改可能很有用。使用wxIMAGE_OPTION_GIF_TRANSPARENCY_UNCHANGED
來保持顏色正確。使用wxIMAGE_OPTION_GIF_TRANSPARENCY_HIGHLIGHT
將透明像素轉換為粉紅色(預設)。此選項已在 wxWidgets 3.1.1 中新增。
注意:合併選項 wxIMAGE_OPTION_TIFF_SAMPLESPERPIXEL
、wxIMAGE_OPTION_TIFF_BITSPERSAMPLE
和 wxIMAGE_OPTION_TIFF_PHOTOMETRIC
時請小心。雖然採取了一些措施來防止非法組合和/或值,但仍然很容易濫用它們並產生無效的結果,形式為損壞的影像或崩潰。
傳回值:選項的值,如果找不到則傳回 0。如果 0 可以是有效選項值,請使用 hasOption/2
。
請參閱
-spec getOrFindMaskColour(This) -> Result when Result :: {Res :: boolean(), R :: integer(), G :: integer(), B :: integer()}, This :: wxImage().
取得目前的遮罩顏色或尋找可用作遮罩顏色的合適未使用顏色。
如果影像目前有遮罩,則傳回 true。
-spec getPalette(This) -> wxPalette:wxPalette() when This :: wxImage().
傳回與影像相關聯的調色盤。
目前,調色盤僅在 Windows 下轉換為 wxBitmap
時使用。
某些 wxImage
處理程式已修改為在影像檔案中存在調色盤時設定調色盤(通常為 GIF 或 PNG 格式中 256 種或更少顏色的影像)。
傳回給定座標的紅色強度。
-spec getSubImage(This, Rect) -> wxImage() when This :: wxImage(), Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}.
傳回目前影像的子影像,只要矩形完全屬於影像。
取得影像的寬度(以像素為單位)。
請參閱:getHeight/1
如果此影像有 Alpha 通道,則傳回 true,否則傳回 false。
請參閱
如果存在作用中的遮罩,則傳回 true,否則傳回 false。
-spec hasOption(This, Name) -> boolean() when This :: wxImage(), Name :: unicode:chardata().
如果存在給定的選項,則傳回 true。
此函數對 name
不區分大小寫。
目前支援的選項列表位於 getOption/2
和 getOptionInt/2
函數文件中。
請參閱
-spec initAlpha(This) -> ok when This :: wxImage().
初始化影像 Alpha 通道資料。
如果影像已經有 alpha 資料,則呼叫它會發生錯誤。如果沒有,alpha 資料預設會初始化為所有像素完全不透明。但是,如果影像有遮罩顏色,則所有遮罩像素將完全透明。
-spec initStandardHandlers() -> ok.
僅限內部使用。
新增標準影像格式處理程式。目前它僅安裝 wxBMPHandler,wxBitmap
會使用它。
此函數由 wxWidgets 在啟動時呼叫,使用者不應呼叫它。
請參閱:?wxInitAllImageHandlers()
如果存在影像資料,則傳回 true。
-spec isTransparent(This, X, Y, [Option]) -> boolean() when This :: wxImage(), X :: integer(), Y :: integer(), Option :: {threshold, integer()}.
如果給定的像素是透明的,則傳回 true,即如果此影像有遮罩,則具有遮罩顏色,或者如果此影像有 Alpha 通道且此像素的 Alpha 值嚴格小於 threshold
。
-spec loadFile(This, Name) -> boolean() when This :: wxImage(), Name :: unicode:chardata().
-spec loadFile(This, Name, [Option]) -> boolean() when This :: wxImage(), Name :: unicode:chardata(), Option :: {type, wx:wx_enum()} | {index, integer()}.
從檔案載入影像。
如果未提供處理程式類型,則程式庫將嘗試自動偵測格式。
-spec loadFile(This, Name, Mimetype, [Option]) -> boolean() when This :: wxImage(), Name :: unicode:chardata(), Mimetype :: unicode:chardata(), Option :: {index, integer()}.
從檔案載入影像。
如果未提供處理程式類型,則程式庫將嘗試自動偵測格式。
等同於 mirror(This, [])
。
-spec mirror(This, [Option]) -> wxImage() when This :: wxImage(), Option :: {horizontally, boolean()}.
傳回影像的鏡像副本。
參數 horizontally
表示方向。
-spec new() -> wxImage().
建立一個不帶 Alpha 通道的空的 wxImage
物件。
-spec new(Name) -> wxImage() when Name :: unicode:chardata(); (Sz) -> wxImage() when Sz :: {W :: integer(), H :: integer()}.
等同於:new/2
-spec new(Width, Height) -> wxImage() when Width :: integer(), Height :: integer(); (Name, [Option]) -> wxImage() when Name :: unicode:chardata(), Option :: {type, wx:wx_enum()} | {index, integer()}; (Sz, Data) -> wxImage() when Sz :: {W :: integer(), H :: integer()}, Data :: binary(); (Sz, [Option]) -> wxImage() when Sz :: {W :: integer(), H :: integer()}, Option :: {clear, boolean()}.
這是一個為了方便而提供的多載成員函式。它與上述函式的不同之處僅在於它接受的引數。
-spec new(Width, Height, Data) -> wxImage() when Width :: integer(), Height :: integer(), Data :: binary(); (Width, Height, [Option]) -> wxImage() when Width :: integer(), Height :: integer(), Option :: {clear, boolean()}; (Name, Mimetype, [Option]) -> wxImage() when Name :: unicode:chardata(), Mimetype :: unicode:chardata(), Option :: {index, integer()}; (Sz, Data, Alpha) -> wxImage() when Sz :: {W :: integer(), H :: integer()}, Data :: binary(), Alpha :: binary().
這是一個為了方便而提供的多載成員函式。它與上述函式的不同之處僅在於它接受的引數。
-spec new(Width, Height, Data, Alpha) -> wxImage() when Width :: integer(), Height :: integer(), Data :: binary(), Alpha :: binary().
從記憶體中的資料建立影像。
如果 static_data
為 false,則 wxImage
將取得資料的所有權並在之後釋放它。為此,必須使用 malloc
分配它。
等同於:isOk/1
-spec removeHandler(Name) -> boolean() when Name :: unicode:chardata().
尋找具有給定名稱的處理器,並將其移除。
處理程式也會被刪除。
傳回值:如果找到並移除處理程式,則傳回 true,否則傳回 false。
-spec replace(This, R1, G1, B1, R2, G2, B2) -> ok when This :: wxImage(), R1 :: integer(), G1 :: integer(), B1 :: integer(), R2 :: integer(), G2 :: integer(), B2 :: integer().
將 r1
,g1,b1 指定的顏色取代為顏色 r2
,g2,b2。
-spec rescale(This, Width, Height, [Option]) -> wxImage() when This :: wxImage(), Width :: integer(), Height :: integer(), Option :: {quality, wx:wx_enum()}.
透過縮放來就地變更影像的大小:呼叫此函式後,影像將具有給定的寬度和高度。
有關 quality
參數的說明,請參閱 scale/4
函數。傳回(修改後的)影像本身。
請參閱:scale/4
-spec resize(This, Size, Pos, [Option]) -> wxImage() when This :: wxImage(), Size :: {W :: integer(), H :: integer()}, Pos :: {X :: integer(), Y :: integer()}, Option :: {r, integer()} | {g, integer()} | {b, integer()}.
透過添加具有給定顏色的邊框或在必要時裁剪來就地變更影像的大小,而不進行縮放。
影像會貼到新的影像中,新影像的大小為給定的 size
,背景顏色為給定的顏色,位置為相對於新影像左上角的 pos
。
如果 red
= green = blue = -1,則使用目前設定的遮罩顏色,如果未設定,則找到、使用並設定適合任何新暴露區域的遮罩顏色。
傳回值:(修改後的)影像本身。
請參閱:size/4
等同於 rotate90(This, [])
。
-spec rotate90(This, [Option]) -> wxImage() when This :: wxImage(), Option :: {clockwise, boolean()}.
傳回一個影像的副本,該影像會依 clockwise
所指示的方向旋轉 90 度。
-spec rotate(This, Angle, RotationCentre, [Option]) -> wxImage() when This :: wxImage(), Angle :: number(), RotationCentre :: {X :: integer(), Y :: integer()}, Option :: {interpolating, boolean()} | {offset_after_rotation, {X :: integer(), Y :: integer()}}.
將影像繞著給定的點旋轉,角度為 angle
弧度。
將 true 傳遞給 interpolating
會產生更好的影像品質,但速度較慢。
如果影像有遮罩,則遮罩顏色會用於旋轉影像背景中未覆蓋的像素。否則,將使用黑色 (rgb 0, 0, 0)。
傳回旋轉後的影像,保持此影像完好無損。
將影像中每個像素的色相旋轉 angle
,該值為 -1.0 到 +1.0 範圍內的雙精度浮點數,其中 -1.0 對應於 -360 度,+1.0 對應於 +360 度。
-spec saveFile(This, Name) -> boolean() when This :: wxImage(), Name :: unicode:chardata().
將影像儲存到指定名稱的檔案中。
檔案類型是從檔案名稱的副檔名判斷的。請注意,如果副檔名無法識別,此函數可能會失敗!您可以使用上面的其中一種格式將影像儲存到具有非標準副檔名的檔案。
-spec saveFile(This, Name, Type) -> boolean() when This :: wxImage(), Name :: unicode:chardata(), Type :: wx:wx_enum(); (This, Name, Mimetype) -> boolean() when This :: wxImage(), Name :: unicode:chardata(), Mimetype :: unicode:chardata().
將影像儲存到指定名稱的檔案中。
-spec scale(This, Width, Height, [Option]) -> wxImage() when This :: wxImage(), Width :: integer(), Height :: integer(), Option :: {quality, wx:wx_enum()}.
傳回影像的縮放版本。
這也適用於縮放一般點陣圖,因為縮放點陣圖的唯一其他方法是將 wxMemoryDC
繪製到另一個 wxMemoryDC
中。
參數 quality
決定用於重新取樣影像的方法,請參閱 wxImageResizeQuality 文件。
應該注意的是,雖然使用 wxIMAGE_QUALITY_HIGH
會產生更好看的結果,但這是一種較慢的方法。降取樣將使用方塊平均方法,該方法的運作速度似乎非常快。如果您使用此方法對較大的影像進行升取樣,您很可能會注意到它速度稍慢,在極端情況下,它會慢很多,因為雙立方演算法必須處理大量資料。
還應該注意的是,當使用單個遮罩顏色來實現透明度時,高質量縮放可能無法按預期工作,因為縮放會模糊影像,因此會部分移除遮罩。使用 alpha 通道將會起作用。
範例
請參閱:rescale/4
此函數與 setData/4
類似,並具有相似的限制。
但是,傳遞給它的指標可能為 NULL,在這種情況下,函數將在內部分配 alpha 陣列 - 這對於向沒有任何 alpha 通道的影像新增 alpha 通道資料非常有用。
如果指標不為 NULL,則每個影像像素必須有一個位元組,並使用 malloc() 分配。wxImage
會取得指標的所有權,除非 static_data
參數設為 true,否則將會釋放它 - 在這種情況下,呼叫者應該執行此操作。
-spec setAlpha(This, X, Y, Alpha) -> ok when This :: wxImage(), X :: integer(), Y :: integer(), Alpha :: integer().
設定指定像素的 alpha 值。
只有在影像具有 alpha 通道資料時才應呼叫此函數,請使用 hasAlpha/1
來檢查是否有。
設定影像資料,而不執行檢查。
給定的資料必須具有 (寬度高度3) 的大小,否則會產生意外的結果。如果您不確定自己知道自己在做什麼,請不要使用此方法。
必須使用 malloc()
而 NOT
使用 operator
new 來分配資料。
如果 static_data
為 false,則在此呼叫之後,資料指標的所有權由 wxImage
物件擁有,該物件將負責刪除它。請勿將透過 getData/1
取得的指標傳遞給此函數。
-spec setData(This, Data, New_width, New_height) -> ok when This :: wxImage(), Data :: binary(), New_width :: integer(), New_height :: integer().
這是一個為了方便而提供的多載成員函式。它與上述函式的不同之處僅在於它接受的引數。
-spec setMask(This) -> ok when This :: wxImage().
等同於 setMask(This, [])
。
指定是否有遮罩。
遮罩區域由目前的遮罩顏色決定。
-spec setMaskColour(This, Red, Green, Blue) -> ok when This :: wxImage(), Red :: integer(), Green :: integer(), Blue :: integer().
設定此影像的遮罩顏色 (並告知影像使用遮罩)。
-spec setMaskFromImage(This, Mask, Mr, Mg, Mb) -> boolean() when This :: wxImage(), Mask :: wxImage(), Mr :: integer(), Mg :: integer(), Mb :: integer().
設定影像的遮罩,使得在遮罩中 RGB 值為 mr、mg、mb 的像素將會在影像中被遮罩。
這是透過首先在影像中找到未使用的顏色,將此顏色設定為遮罩顏色,然後使用此顏色繪製影像中遮罩中相應像素具有給定 RGB 值的所有像素來完成的。
參數 mask
是要從中提取遮罩形狀的遮罩影像。它必須與影像具有相同的尺寸。
參數 mr
、mg
、mb
是遮罩中將用於建立遮罩的像素的 RGB 值。
傳回值:如果遮罩與影像的尺寸不相同,或者如果沒有剩餘未使用的顏色,則傳回 false。如果遮罩已成功套用,則傳回 true。
注意:請注意,此方法涉及計算直方圖,這是一個計算密集型操作。
-spec setOption(This, Name, Value) -> ok when This :: wxImage(), Name :: unicode:chardata(), Value :: integer(); (This, Name, Value) -> ok when This :: wxImage(), Name :: unicode:chardata(), Value :: unicode:chardata().
設定使用者定義的選項。
此函數對 name
不區分大小寫。
例如,儲存為 JPEG 檔案時,會使用 quality
選項,它是 0 到 100 之間的數字(0 是非常差,100 是非常好)。
目前支援的選項列表位於 getOption/2
和 getOptionInt/2
函數文件中。
請參閱
-spec setPalette(This, Palette) -> ok when This :: wxImage(), Palette :: wxPalette:wxPalette().
將調色盤與影像關聯。
調色盤可能會在將 wxImage
轉換為 wxBitmap
時使用(目前僅限 MSW)或在檔案儲存操作中使用(目前沒有)。
-spec setRGB(This, Rect, Red, Green, Blue) -> ok when This :: wxImage(), Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}, Red :: integer(), Green :: integer(), Blue :: integer().
設定給定矩形內像素的顏色。
此常式會對座標執行界限檢查,因此可以認為是操作資料的安全方法。
-spec setRGB(This, X, Y, R, G, B) -> ok when This :: wxImage(), X :: integer(), Y :: integer(), R :: integer(), G :: integer(), B :: integer().
設定指定 x 和 y 座標處的像素顏色。
-spec size(This, Size, Pos, [Option]) -> wxImage() when This :: wxImage(), Size :: {W :: integer(), H :: integer()}, Pos :: {X :: integer(), Y :: integer()}, Option :: {r, integer()} | {g, integer()} | {b, integer()}.
傳回此影像的調整大小版本,而不會通過添加具有給定顏色的邊框或根據需要裁剪來縮放它。
影像會貼到新的影像中,新影像的大小為給定的 size
,背景顏色為給定的顏色,位置為相對於新影像左上角的 pos
。
如果 red
= green = blue = -1,則較大影像中未被此影像覆蓋的區域會透過使用影像遮罩顏色填充使其透明(如果目前未設定,則會自動分配)。
否則,這些區域將以具有指定 RGB 元件的顏色填充。
請參閱:resize/4