2012-08-08 26 views
2

我試圖使用條碼識別軟件,需要遍歷tiff文件中的所有幀。我很困惑的幾點: 1)什麼是框架,爲什麼它有一個GUID,爲什麼我需要迭代幀?我似乎無法找到很多文檔。嘗試遍歷System.Drawing.Image中的幀,拋出無效的參數異常

2)代碼在一次迭代後拋出無效的參數異常。我不知道爲什麼;在邏輯上,我不能超過幀數,所以不知道它是如何可能是一個無效的參數,假設這是問題。

System.Drawing.Image img = System.Drawing.Image.FromStream(mems); 
Guid guid = img.FrameDimensionsList[0]; 
FrameDimension dimension = new FrameDimension(guid); 
int totalFrame = img.GetFrameCount(dimension); 

foreach(int i =0; i < totalFrame; i++) 
{ 
    img.SelectActiveFrame(dimension, i); 
} 

回答

3

框架通常代表同一圖像文件內的多個圖像。例如,動畫GIF沿着時間維度有幾個幀。一個圖標沿着分辨率維度可能有幾個幀(即不同分辨率的不同圖像)。

例如,這個代碼顯示GIF動畫(以LinqPad)的所有幀:

var image = Image.FromFile(path); 
int frames = image.GetFrameCount(FrameDimension.Time); 
for (int i = 0; i < frames; i++) 
{ 
    image.SelectActiveFrame(FrameDimension.Time, i); 
    image.Dump(); 
} 

在代碼中,你採取的第一個元素從FrameDimensionList,不知道哪個維度它代表。嘗試使用FrameDimension.Page代替(假設您需要遍歷「頁面」維度)。

+0

了不起的示例代碼。不知道那些靜態的FrameDimension屬性! – 2015-06-18 15:25:44

相關問題