如何在.NET 2.0中以页面方式拆分多帧TIFF图像?

时间:2015-09-03 15:46:06

标签: c#-2.0 tiff

我想以页面方式分割多个tip图像。 我写了以下代码。

Dim pagecount,ImagePageCount As Integer         Dim activePage As Integer         Dim sourceImage As System.Drawing.Image = Nothing         Dim fImage As Bitmap = Nothing         Dim pageLoad As Boolean = False         尝试             fImage =新位图(tempFilePath)             sourceImage = fImage

        pagecount = sourceImage.GetFrameCount(FrameDimension.Page)
        pageLoad = True
    Catch ex As Exception
        pageLoad = False
        Throw
    End Try

    Try
        If pageLoad = True Then
            If pagecount <> 0 Then
                For ImagePageCount = 0 To pagecount - 1
                    sourceImage.SelectActiveFrame(FrameDimension.Page, ImagePageCount)
                    activePage = ImagePageCount + 1
                    Dim img1 As Drawing.Bitmap = CType(sourceImage.Clone, Drawing.Bitmap)
                    Dim tempPageFile As String = Path.Combine(Path.GetTempPath(), String.Format("{0}_{1}_{2:00000000}_{3}.tif", Convert.ToString(indexEntry.GetFrameNumber()), Convert.ToString(indexEntry.GetCaseNumber()), document.ISN, activePage))
                    img1.Save(tempPageFile)
                    zip.AddFile(tempPageFile, "")
                Next
            End If
            sourceImage.Dispose()
            fImage.Dispose()

        End If

大多数情况下它可以正常工作,但是当具有不同大小(以像素为单位)的图像出现时,sourceImage.SelectActiveFrame(FrameDimension.Page,ImagePageCount)失败。

我观察到只有当第一页的尺寸小于其他页面时才会发生。

对此有任何想法。

由于

1 个答案:

答案 0 :(得分:0)

页面大小不应影响它。使用3页TIFF文件测试类似的代码,其中第一页小于在.NET 2.0程序中工作的另外2页 但是,由于TIFF可以为每个页面设置不同的压缩格式,因此如果您在操作系统上点击了GDI +不支持的页面,则很可能会发生故障。
有效的测试文件通过LZW压缩保存了所有3页。

有关不同Windows版本如何支持不同子类型的TIFF的讨论,请参阅以下文章:
C# Generic GDI+ Error when using Image.Save()