(translator=roro, ChineseSource=roro-20020502-9\imwrite.html, EnglishSource=c:\matlabr12\help\techdoc\ref\imwrite.html)
| MATLAB Function Reference |    | 
imwrite
將影像寫入圖檔中
Syntax
imwrite(A,filename,fmt)
imwrite(X,map,filename,fmt)
imwrite(...,filename)
imwrite(...,Param1,Val1,Param2,Val2...)
Description
imwrite(A,filename,fmt) 依照格式 fmt 將在 A 中的影像寫入檔名為 filename 的檔案。A 可能是灰階的影像(M-by-N)或全彩的影像(M-by-N-by-3)。若 A 屬於 uint8 或 uint16,imwrite 會將陣列中實際的值寫入檔案。若 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 屬於 uint8 或 uint16,imwrite 會將陣列中實際的值寫入檔案。若 X 屬於 double則 imwrite 會在寫入檔案前以 uint8(X-1) 公式作調整。(下面的註解中針對不同的情形有其他的用法)map 是 MATLAB 中 double 的色盤;imwrite 使用式子 uint8(round(255*map)) 來調整色盤 map 中的值。注意:大多數的影像檔案不支援超過 256 色的色盤。
| 註釋    
若影像為 double格式,並且用 16 bbp 位元深度(bit depth)的 PNG 格式當做輸出格式,則陣列的值將會依uint16(X-1)的公式來做調整。 | 
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 倍。若其原本就為 uint8 或 uint16(只有 PNG 和 TIFF 格式),則會以原來的形式寫入。
| 註釋    
若將一 double或uint8資料寫入 PNG 或 TIFF 檔案中,它將會自動判斷為二元影像,並且將其位元深度(bit depth)設為 1。 | 
對於索引式影像,若索引陣列的型態為 double,則索引值為先轉為以零為基準的索引值,也就是將所有的索引值減去 1,然後再將其轉為 uint8。若索引陣列的型態為 uint8 或 uint16(只有PNG 及 TIFF),則其將不會改變其原先的值。當寫入 PNG 檔案時,可以 override this behavior with the 'BitDepth' 參數;詳情請見在此 imwrite 指令中的 PNG 表格。
Remarks
imwrite 是 MATLAB 中的一個函式。
Example
將索引式影像 X 和其色盤 map 添附一未經壓縮在檔名為 flowers.hdf 的複合式 HDF 檔案。
imwrite(X,map,'flowers.hdf','Compression','none',...
'WriteMode','append')
See Also
fwrite, imfinfo, imread
|   | imread |  | ind2rgb |  |