2009-08-25 29 views
2

画像からグラフィックスを作成してmultipage tiffを編集しようとしましたが、エラーメッセージが表示されました:「インデックス付きピクセルを持つ画像からグラフィックスオブジェクトを作成できませんフォーマット。」System.Drawingを使用してマルチページTIFF画像を編集する

どのように私は、マルチTIFFを編集することができますか?ここで

答えて

1

エラー:A Graphicsオブジェクトは、インデックス付きのピクセルフォーマットを有する画像から作成することができません。

は...それはマルチTIFFであることとは何の関係もありません。インデックス付き画像フォーマットは、それが色のパレットを有することを意味する。それは256色の画像です。 1ビット画像(B &W)も2色のパレットを有するものとみなされる。

あなたはパレットを使用した画像の上にGraphics操作を行うことができない、彼らは最初の15ビット以上の色深度に変換する必要があると思います。

1

私はかつて小さなユーティリティを書きましたTIFF画像から暗号化されたpdfsを作成します。

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

ImageからGetInstanceメソッドを見つけることができませんか? – Tamir

6

複数ページのTIFFファイルから1ページを抽出する方法を書きました。

// 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ファイルを読み込み、1つのページ(変数tiffpageの数値)を新しいビットマップに抽出します。これは索引付けされず、グラフィックスオブジェクトを作成できます。

+1

SelectActiveFrameでは、tiffpage = 0が1ページ目になります。 –

関連する問題