2012-03-21 3 views
0

웹 브라우저 컨트롤을 사용하여 ASP.NET에서 개발 한 인트라넷 응용 프로그램의 스크린 샷을 생성하고 있습니다.VB.NET - 이미지 압축

스크린 샷이 생성되고 압축 된 다음 데이터베이스에 BLOB로 저장됩니다. 이 시설을 개발할 때 가장 낮은 바이트 크기로 이미지를 압축하는 최선의 방법을 조사했지만 데이터베이스 테이블이 내가 원하는 것보다 더 커지면서 이미지가 여전히 너무 큰 것처럼 보입니다. 나는 TIFF 형식을 사용하고 있지만 사진가가 사용하는 것처럼 좋지 않을 수도 있습니다. (누가 좋은 품질의 사진을 요구한다고 가정합니다.)

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없이 가능한 한 작게 파일을 만들 때 사용하는 파일 형식/압축 알고리즘이 있습니다 : 여기 (가 BLOB으로 저장되기 전에) 이미지를 압축하는 코드입니다 많이

답변

0

Jpg 또는 Png가 Tiff보다 작게 만들어야합니다.

+0

데이터베이스에서 BLOB를 추출했습니다. TIFF로 인코딩했습니다. 그러나 TIFF, JPG 등의 형식으로 페이지에 표시되는 것으로 보입니다. 왜 그런지 알 수 있습니까? 나는 이것을 위해 또 다른 질문을 게시했다 : http://stackoverflow.com/questions/9810012/net-bitmap-object. – w0051977