How to open a multi-frame TIFF imageformat image in .NET 2.0?

前端 未结 3 1081
猫巷女王i
猫巷女王i 2020-12-08 11:53
Image.FromFile(@\"path\\filename.tif\")

or

Image.FromStream(memoryStream)

both produce image objects with only on

相关标签:
3条回答
  • 2020-12-08 12:19

    bitmap.Dispose();

    After For loop you need to Dispose bitmap. Otherwise you get error "file using other process" when try to use same file in other process.

    0 讨论(0)
  • 2020-12-08 12:21

    Here's what I use:

    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;
    }
    
    0 讨论(0)
  • 2020-12-08 12:23

    I was able to handle the multi-frame tiff by using the below method.

    Image multiImage = Image.FromFile(sourceFile);
    
    multiImage.Save(destinationFile, tiff, prams);
    
    int pageCount = multiImage.GetFrameCount(FrameDimension.Page);
    
    for (int page = 1; page < pageCount; page++ )
    {
        multiImage.SelectActiveFrame(FrameDimension.Page,page);
        multiImage.SaveAdd(dupImage,prams);
    }
    
    multiImage.SaveAdd(newPage, prams);
    multiImage.Dispose(); 
    

    I have not tried the solution in .net 2.0 but MSDN shows the class members to exist. It did fix my problem in .net 4.5.2.

    0 讨论(0)
提交回复
热议问题