2012-03-21 239 views
0

我正在使用Web浏览器控件生成在ASP.NET中开发的Intranet应用程序的屏幕截图。VB.NET - 图像压缩

屏幕截图被生成,压缩,然后作为BLOB存储在数据库中。当我开发这个工具时,我调查了压缩图像的最佳方式(到最低字节大小),但是图像看起来仍然太大,因为数据库表的增长比我希望的要大。我正在使用TIFF格式,但我现在认为这可能不是最好的,因为它是由摄影师使用的(我假设需要高质量的照片)。下面是对图像进行压缩(之前它被存储为BLOB)代码:

Public Function compressImage() As String 
     Try 
      Dim jgpEncoder As ImageCodecInfo = GetEncoder(ImageFormat.Tiff) 
      'Dim myEncoder As System.Drawing.Imaging.Encoder = System.Drawing.Imaging.Encoder.Quality 
      Dim myEncoderParameters As New EncoderParameters(1) 
      Dim myEncoderParameter As New EncoderParameter(System.Drawing.Imaging.Encoder.Compression, CLng(EncoderValue.CompressionCCITT3)) 
      myEncoderParameters.Param(0) = myEncoderParameter 


      Dim ms As MemoryStream = New MemoryStream() 
      'bmp1.Save(ms, ImageFormat.Jpeg) 
      ConvertedImage.Save(ms, ImageFormat.Tiff) 
      Dim bmpBytes() As Byte 
      bmpBytes = ms.ToArray() 
      'ConvertedImage.Dispose() 
      ms.Close() 
      ms = Nothing 

     Catch ex As Exception 
      MsgBox(ex.ToString()) 
     End Try 
    End Function 

Private Function GetEncoder(ByVal format As ImageFormat) As ImageCodecInfo 

     Dim codecs As ImageCodecInfo() = ImageCodecInfo.GetImageDecoders() 

     Dim codec As ImageCodecInfo 
     For Each codec In codecs 
      If codec.FormatID = format.Guid Then 
       Return codec 
      End If 
     Next codec 
     Return Nothing 

    End Function 

是否有一个文件格式/压缩算法,我应该用它来尝试,使文件尽可能小,没有太多sacrifycing质量太多

回答

0

JPG或Png应该让你比Tiff小。

+0

我已经从数据库中提取了一个BLOB。我将它编码为TIFF。但是,它似乎以任何格式显示在页面上,例如TIFF,JPG等。你知道这可能是为什么吗?我已经为此发布了另一个问题:http://stackoverflow.com/questions/9810012/net-bitmap-object。 – w0051977 2012-03-21 19:43:17