我想以页面方式分割多个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)失败。
我观察到只有当第一页的尺寸小于其他页面时才会发生。
对此有任何想法。
由于
答案 0 :(得分:0)
页面大小不应影响它。使用3页TIFF文件测试类似的代码,其中第一页小于在.NET 2.0程序中工作的另外2页
但是,由于TIFF可以为每个页面设置不同的压缩格式,因此如果您在操作系统上点击了GDI +不支持的页面,则很可能会发生故障。
有效的测试文件通过LZW压缩保存了所有3页。
有关不同Windows版本如何支持不同子类型的TIFF的讨论,请参阅以下文章:
C# Generic GDI+ Error when using Image.Save()