如何在.NET 2.0中打开多帧TIFF图像格式图像?

时间:2008-12-30 21:25:34

标签: c# tiff system.drawing

Image.FromFile(@"path\filename.tif")

Image.FromStream(memoryStream)

即使源是多帧TIFF文件,也​​只生成一帧的图像对象。 如何加载保留这些帧的图像文件?使用Image.SaveAdd方法逐帧保存tiff。它们在其他查看器中工作,但.NET Image方法不会加载这些帧,只有第一个。

这是否意味着无法从我传入位图集合的方法返回多帧TIFF以用作帧?

3 个答案:

答案 0 :(得分:24)

以下是我使用的内容:

private List<Image> GetAllPages(string file)
{
    List<Image> images = new List<Image>();
    Bitmap bitmap = (Bitmap)Image.FromFile(file);
    int count = bitmap.GetFrameCount(FrameDimension.Page);
    for (int idx = 0; idx < count; idx++)
    {
        // save each frame to a bytestream
        bitmap.SelectActiveFrame(FrameDimension.Page, idx);
        MemoryStream byteStream = new MemoryStream();
        bitmap.Save(byteStream, ImageFormat.Tiff);

        // and then create a new Image from it
        images.Add(Image.FromStream(byteStream));
    }
    return images;
}

答案 1 :(得分:2)

我能够使用以下方法处理多帧tiff。

select salesordernumber
,      deliverydate
,      listagg(ssritemcode || ': ' || ssrserialnumber, ', ') ssrserialnumber_list
from   GoodsDeliveryLineSerialNumbers 
group
by     deliverydate
,      salesordernumber
order 
by     deliverydate

我没有尝试过.net 2.0中的解决方案,但是MSDN显示了类成员的存在。它确实解决了我在.net 4.5.2中的问题。

答案 2 :(得分:0)

bitmap.Dispose();

在For循环之后,您需要Dispose位图。否则你会得到错误&#34;文件使用其他进程&#34;当尝试在其他进程中使用相同的文件时。