(translator=roro, ChineseSource=roro-20020502-9\imwrite.html, EnglishSource=c:\matlabr12\help\techdoc\ref\imwrite.html)
MATLAB Function Reference    
imwrite

將影像寫入圖檔中

Syntax

Description

imwrite(A,filename,fmt) 依照格式 fmt 將在 A 中的影像寫入檔名為 filename 的檔案。A 可能是灰階的影像(M-by-N)或全彩的影像(M-by-N-by-3)。若 A 屬於 uint8uint16imwrite 會將陣列中實際的值寫入檔案。若 A 屬於 double,則 imwrite 將會在寫進檔案前先做 uint8(round(255*A)) 的動作。這個式子是將原本範圍在 [0,1] 的浮點數轉換成範圍在 [0,255] 的 8 位元整數。

imwrite(X,map,filename,fmt)X 中的索引式影像(indexed image)和存放在 map 對應的色盤(colormap)依格式 fmt 寫入檔名為 filename 的檔案中。若 X 屬於 uint8uint16imwrite 會將陣列中實際的值寫入檔案。若 X 屬於 doubleimwrite 會在寫入檔案前以 uint8(X-1) 公式作調整。(下面的註解中針對不同的情形有其他的用法)map 是 MATLAB 中 double 的色盤;imwrite 使用式子 uint8(round(255*map)) 來調整色盤 map 中的值。注意:大多數的影像檔案不支援超過 256 色的色盤。

imwrite(...,filename) 將影像寫入檔案 filename 中,並依 fmt 來推論檔案的格式。

imwrite(...,Param1,Val1,Param2,Val2...) 依照參數來控制輸出檔案中不同的數值。HDF, PNG, JPEG, 及 TIFF 檔案可使用參數的設定功能。舉例來說,如果想寫入一 JPEG 檔案,則可以設定 JPEG 檔案壓縮的品質。各格式可用的參數列於下表。

filename 為輸出檔的檔名;而 fmt 則是表示檔案的格式,兩者皆以字串的型態來表示。

此表列出 fmt 可能的值。

格式
檔案類型
'bmp'
Windows 點陣圖 (BMP)
'hdf'
Hierarchical Data Format (HDF)
'jpg' or 'jpeg'
JPEG 圖形交換格式 (JPEG)
'pcx'
Windows Paintbrush (PCX)
'png'
網路可攜式圖形 (PNG)
'tif' or 'tiff'
Tagged Image File Format (TIFF)
'xwd'
X Windows Dump (XWD)

此表格列出 HDF 檔案可用的參數。

參數
數值
HDF 預設值
'Compression'

下列三者之一:'none' (預設值), 'rle', 'jpeg'. 'rle' 用在灰階或索引式影像,'jpeg' 則是用於灰階或全彩影像。

'rle'
'Quality'
在 0 到 100 之間的數字;當 'Compression''jpeg' 時,這個參數才會出現。
數字愈大就代表品質愈好,不過相對地,檔案的的容量也會比較大。
75
'WriteMode'
下列兩者之一:'overwrite' (預設值), 或 'append'.
'overwrite'

此表格列出 JPEG 檔案可用的參數。

參數
數值
JPEG 預設值
'Quality'
在 0 到 100 之間的數字;數字愈大就代表品質愈好,不過相對地,檔案的的容量也會比較大。
75

此表格列出 TIFF 檔案可用的參數。

參數
數值
TIFF 預設值
'Compression'
下列幾項之一:'none', 'packbits', 'ccitt', 'fax3', 或 'fax4''ccitt', 'fax3', 和 'fax4' 只能用在二位元的影像檔案。

對於二位元的影像檔案,使用 'ccitt' 為預設值;否則用 'packbits' 為預設值。

'Description'
任何字串;當使用 imfinfo 指令時會在回傳值中的 ImageDescription 欄位出現。
空字串
'Resolution'
一個兩元素的向量,其分別代表水平及垂直方向每單位的像素。或是以一個值來表示兩者的解析結果。
72
'WriteMode'
下列兩者之一:'overwrite''append'
'overwrite'

此表格列出 PNG 檔案可用的參數。

參數
數值
PNG 預設值
'Author'
字串
空字串
'Description'
字串
空字串
'Copyright'
字串
空字串
'CreationTime'
字串
空字串
'Software'
字串
空字串
'Disclaimer'
字串
空字串
'Warning'
字串
空字串
'Source'
字串
空字串
'Comment'
字串
空字串
'InterlaceType'
'none''adam7'
'none'
'BitDepth'
以一個數字表示所期望的位元深度(bit depth)。若是灰階影像,則可能為 1, 2, 4, 8, 或 16。
若是有 alpha channel 的灰階影像則可能為 8 或 16。若是索引式圖像則為 1, 2, 4, 或 8。若是全彩影像則為 8 或 16。
若影像屬於 double 或 uint8,則預設值為每像素 8 位元。
若影像屬於 uint16,則預設值為每像素 16 位元。
若影像屬於 logical,則預設值為每像素 1 位元。
'Transparency'

在沒有使用 alpha channel 時,這個值表示透明度(transparency)的資訊。設定的值代表所應被視為透明的像素。(若影像有使用色盤,則這個值表示色盤的索引值)

若為索引式影像:含有 Q 個元素,範圍在 [0,1] 之間的向量,Q 不會比色盤的長度還長,而每個值都對應至色盤的值,在大多數的範例中,Q=1

若為灰階影像:一個範圍在 [0,1] 之間的數。這個值表示灰階層中的某種顏色將被視為透明。

若為全彩影像:含有三個元素,範圍在 [0,1] 之間的向量。這個值表示全彩中的某種顏色將被視為透明。

你不能同時設定 'Transparency''Alpha'


'Background'
當合成透明像素時,這個值用來表示背景的顏色。若為索引式影像:範圍 [1,P] 之間的一個數字,P 表示色盤的長度。若為灰階影像:範圍 [0,1] 之間的一個數字。若為全彩影像:三個元素的向量,範圍分佈於 [0,1] 之間。

'Gamma'
一個表示檔案 gamma 的數,其值大於等於零。


'Chromaticities'
一個含有八個元素 [wx wy rx ry gx gy bx by] 的向量。表示 the reference white point 和主要的色像差(chromaticities)。

'XResolution'
在水平方向每一單位有多少像素。

'YResolution'
在垂直方向每一單位有多少像素。

'ResolutionUnit'
'unknown' 或 'meter'

'Alpha'
以一個陣列來表示每個像素的透明度。如同一般的資料陣列,其行、列的單位可為 uint8, uint16, 或 double,陣列中元素的範圍在 [0,1] 之間。

'SignificantBits'
用數字或向量來表示在資料陣列中有多少位元應被視為有意義的(significant);數值的範圍在 [1,BitDepth] 之間。
若為索引式影像:一個三元素的向量。若為灰階影像:一個數字。若含有 alpha channel 的灰階影像:為一二元素的向量。若為全彩影像:一三元素的向量。若含有 alpha channel 的全彩影像:一四元素向量。

除了上述這些 PNG 的參數外,你可以使用任何參數的名字,包括可印出的字元和不為起始的空白字元,來達到 PNG 對關鍵字的辨別。而使用者定義的參數必須是字串,並且沒有除了 linefeed 之外的任何控制字元。

Format Support

此表格對 imwrite 可寫入的影像格式作個總結。

格式
不同版本
BMP
8 位元有相關對應色盤的無壓縮影像;
24 位元的無壓縮影像。
HDF
8 位元光柵(raster)影像,
24 位元光柵(raster)影像;無壓縮過或是已壓縮的 RLE 或 JPEG。
JPEG
底層(Baseline)JPEG 影像(8 或 24 位元)。
註釋: 在寫成 JPEG 檔案之前,索引式影像會先轉成 RGB,因為 JPEG 格式並不支援索引式影像。
PCX
8 位元影像。
PNG
1 位元, 2 位元, 4 位元, 8 位元, 和 16 位元的灰階影像;
8 位元和 16 位元有 alpha channels 的灰階影像;
1 位元, 2 位元, 4 位元, 和 8 位元的索引式影像;
24 位元和 48 位元的全彩影像。
TIFF
底層(Baseline)TIFF 影像,包括 1 位元, 8 位元, 及 24 位元未壓縮的影像; 1 位元, 8 位元, 及 24 位元經包裝位元(packbits)壓縮的影像;
1 位元經 CCITT 1D, Group 3, 及 Group 4 壓縮的影像。
XWD
8 位元 ZPixmaps。

Class Support

大多數所支援的影像檔案格式都屬於 uint8 的資料。PNG 及 TIFF 額外地支援 uint16 的資料。對於灰階及全彩的影像,若資料陣列的資料型態為 double,則預設動態的範為在 [0,1] 之間。當資料要轉為 uint8 時,資料陣列會自動地乘上 255 倍。若其原本就為 uint8uint16(只有 PNG 和 TIFF 格式),則會以原來的形式寫入。

對於索引式影像,若索引陣列的型態為 double,則索引值為先轉為以零為基準的索引值,也就是將所有的索引值減去 1,然後再將其轉為 uint8。若索引陣列的型態為 uint8uint16(只有PNG 及 TIFF),則其將不會改變其原先的值。當寫入 PNG 檔案時,可以 override this behavior with the 'BitDepth' 參數;詳情請見在此 imwrite 指令中的 PNG 表格。

Remarks

imwrite 是 MATLAB 中的一個函式。

Example

將索引式影像 X 和其色盤 map 添附一未經壓縮在檔名為 flowers.hdf 的複合式 HDF 檔案。

See Also

fwrite, imfinfo, imread


 imread ind2rgb