我们公司有一个应用程序,可以通过传真或扫描仪接收双色调 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,和/或将图像转换为字节数组的更快方法?