我想通过从图像创建图形来编辑多页tiff,但是我遇到了错误消息: “无法从具有索引像素格式的图像创建图形对象。”< / EM>
如何编辑多页tiff?
答案 0 :(得分: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 :(得分:1)
这是一个CodeProject示例的链接,其中包含将TIFF文件转换为普通Bitmap的代码,然后您可以像任何其他Bitmap一样使用该代码:
http://www.codeproject.com/KB/GDI-plus/BitonalImageConverter.aspx
答案 2 :(得分: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
}
答案 3 :(得分:1)
错误:无法从具有索引像素格式的图像创建图形对象。
...与多重TIFF无关。索引图像格式意味着它具有颜色调色板,例如,这是一个256色的图像。 1位图像(B&amp; W)也可以计为具有2种颜色的调色板。
您无法对使用调色板的图像执行Graphics
操作,首先需要将它们转换为15位或更多颜色深度。