画像からグラフィックスを作成してmultipage tiffを編集しようとしましたが、エラーメッセージが表示されました:「インデックス付きピクセルを持つ画像からグラフィックスオブジェクトを作成できませんフォーマット。」System.Drawingを使用してマルチページTIFF画像を編集する
どのように私は、マルチTIFFを編集することができますか?ここで
画像からグラフィックスを作成してmultipage tiffを編集しようとしましたが、エラーメッセージが表示されました:「インデックス付きピクセルを持つ画像からグラフィックスオブジェクトを作成できませんフォーマット。」System.Drawingを使用してマルチページTIFF画像を編集する
どのように私は、マルチTIFFを編集することができますか?ここで
エラー:A Graphicsオブジェクトは、インデックス付きのピクセルフォーマットを有する画像から作成することができません。
は...それはマルチTIFFであることとは何の関係もありません。インデックス付き画像フォーマットは、それが色のパレットを有することを意味する。それは256色の画像です。 1ビット画像(B &W)も2色のパレットを有するものとみなされる。
あなたはパレットを使用した画像の上にGraphics
操作を行うことができない、彼らは最初の15ビット以上の色深度に変換する必要があると思います。
は、あなたがして、他のビットマップのように動作することができ、通常のビットマップにTIFFファイルを変換するためのコードが含まれCodeProjectのサンプルへのリンク、次のとおりです。
http://www.codeproject.com/KB/GDI-plus/BitonalImageConverter.aspx
私はかつて小さなユーティリティを書きました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
}
複数ページの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の数値)を新しいビットマップに抽出します。これは索引付けされず、グラフィックスオブジェクトを作成できます。
SelectActiveFrameでは、tiffpage = 0が1ページ目になります。 –
ImageからGetInstanceメソッドを見つけることができませんか? – Tamir