私たちの会社には、モノクロ 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 として保存する方法、および/または画像をバイト配列に変換するより高速な方法はありますか?