【问题标题】:How do I asynchronously display and save bitonal Tiff images in Silverlight?如何在 Silverlight 中异步显示和保存双色调 Tiff 图像?
【发布时间】:2012-07-26 02:04:17
【问题描述】:

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

【问题讨论】:

    标签: silverlight tiff


    【解决方案1】:

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

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

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

    您可能会发现this answer 对类似问题也很有用。

    【讨论】:

      猜你喜欢
      • 2011-01-11
      • 1970-01-01
      • 2013-12-20
      • 1970-01-01
      • 1970-01-01
      • 2022-12-22
      • 1970-01-01
      • 2016-03-18
      • 1970-01-01
      相关资源
      最近更新 更多