1

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

4

1 回答 1

0

据我所知,Silverlight 对 TIFF 图像的支持非常有限。

有 3-rd 方库可以帮助您完成任务。我个人建议您尝试LibTiff.Net库。该库是完全免费的(即使用于商业用途)并且是开源的。

LibTiff.Net 的源代码包包含 Silverlight 测试应用程序,它展示了如何在 Silverlight 应用程序中异步加载和显示 TIFF 图像。它可以显示各种 TIFF 风格,包括双色调的。

您可能会发现这个类似问题的答案也很有用。

于 2012-07-26T11:45:49.393 回答