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画像のサポートは非​​常に限られています。

あなたの仕事を助けることができるサードパーティのライブラリがあります。個人的にはLibTiff.Netライブラリを試してみることをお勧めします。ライブラリは完全に無料で(商用利用でも)、オープンソースです。

LibTiff.Netのソースコードパッケージには、SilverlightアプリでTIFF画像を非同期で読み込んで表示する方法を示すSilverlightテストアプリケーションが含まれています。ビトナルを含むさまざまなTIFFフレーバーを表示できます。

同様の質問に対するこの回答も役立つかもしれません。

于 2012-07-26T11:45:49.393 に答える