我们公司的应用程序通过传真或扫描仪接收双色调TIFF图像并将其保存到数据库中;目前,我们使用ActiveX控件显示数据库中的图像,但现在我们要使用Silverlight控件来显示这些图像。但是,我们无法将图像显示或保存为双色调TIFF图像;在我们的ashx处理程序中使用以下代码,我们得到一个空白图像:
pageno = Convert.ToInt32(context.Request.QueryString("page"))
'Get image data from database
Dim bmp() As Byte = ShowDocumentImage(documentID)
'Get current page of TIFF image as bitmap
Dim newBmp As Bitmap = GetTifPage(bmp, pageno)
Dim info As Imaging.ImageCodecInfo = Nothing
Dim ice As Imaging.ImageCodecInfo
For Each ice In Imaging.ImageCodecInfo.GetImageEncoders()
If ice.MimeType = "image/tiff" Then
info = ice
End If
Next
Dim enc As Imaging.Encoder = Imaging.Encoder.SaveFlag
Dim ep As New Imaging.EncoderParameters(2)
ep.Param(0) = New Imaging.EncoderParameter(enc, CLng(Imaging.EncoderValue.MultiFrame))
ep.Param(1) = New Imaging.EncoderParameter(enc, CLng(Imaging.EncoderValue.CompressionCCITT4))
If newBmp IsNot Nothing Then
newBmp.Save(context.Response.OutputStream, info, ep)
newBmp.Dispose()
End If
相反,我们必须将它们保存为JPEG,它会向用户显示,但也会增加文件的位深度和大小;它还会增加保存图像所需的时间。将1728x2079 JPEG转换为字节数组大约需要6秒钟,以便将其上传到数据库。
有没有办法将图像显示并保存为双色调TIFF,和/或将图像转换为字节数组的更快方法?
答案 0 :(得分:0)
据我所知,Silverlight对TIFF图像的支持非常有限。
有第三方图书馆可以帮助您完成任务。我个人建议你试试LibTiff.Net库。该库完全免费(即使是商业用途)和开源。
LibTiff.Net的源代码包包含Silverlight测试应用程序,该应用程序显示如何在Silverlight应用程序中异步加载和显示TIFF图像。它可以显示各种TIFF风格,包括双色调。
您可能会发现this answer类似的问题也很有用。