2012-03-21 240 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