2009-08-25 140 views

回答

1

錯誤:圖形對象不能從具有索引像素格式的圖像創建的。

...無關與它是一個多頁TIFF。索引圖像格式意味着它具有調色板,例如,這是一個256色的圖像。 A 1位圖像(B & W)也將被計作具有2種顏色的調色板。

對於使用調色板的圖像,您無法執行Graphics操作,需要先將其轉換爲15位或更多顏色深度。

1

我曾經寫過的小工具從tiff圖像創建加密的pdf。下面是一段代碼,以獲得從TIFF圖像的頁面:

var bm= new System.Drawing.Bitmap('tif path'); 
var total = bm.GetFrameCount(System.Drawing.Imaging.FrameDimension.Page); 
for(var x=0;x<total;x++) 
{ 
    bm.SelectActiveFrame(System.Drawing.Imaging.FrameDimension.Page,x); 
    var img=Image.GetInstance(bm,null,false); 

    //do what ever you want with img object 
} 
+2

我無法找到圖片getInstance方法? – Tamir 2009-08-25 12:26:15

6

我寫的東西來提取一個多頁TIFF文件單頁。

// Load as Bitmap 
using (Bitmap bmp = new Bitmap(file)) 
{ 
    // Get pages in bitmap 
    int frames = bmp.GetFrameCount(System.Drawing.Imaging.FrameDimension.Page); 
    bmp.SelectActiveFrame(System.Drawing.Imaging.FrameDimension.Page, tiffpage); 
    if (bmp.PixelFormat != PixelFormat.Format1bppIndexed) 
    { 
     using (Bitmap bmp2 = new Bitmap(bmp.Width, bmp.Height)) 
     { 
      bmp2.Palette = bmp.Palette; 
      bmp2.SetResolution(bmp.HorizontalResolution, bmp.VerticalResolution); 
      // create graphics object for new bitmap 
      using (Graphics g = Graphics.FromImage(bmp2)) 
      { 
       // copy current page into new bitmap 
       g.DrawImageUnscaled(bmp, 0, 0); 

           // do whatever you migth to do 
       ... 

      } 
     } 
    } 
} 

的片段加載TIF文件,並提取一個頁面(可變tiffpage數)到一個新的位圖。這不是索引,並且可以創建一個圖形對象。

+1

應當注意,在SelectActiveFrame,tiffpage = 0將是第1頁。 – 2014-03-03 20:10:43