Primeiramente devemos configurar alguma propriedades do objeto graphics, por default as configurações do System.Drawing são para velocidade e não para qualidade de imagens, por isso devemos configurar as propriedades.
_ImagemPrincipal.SetResolution(_ResolucaoImagem,_ResolucaoImagem)
_Grafico = Graphics.FromImage(_ImagemPrincipal)
_Grafico.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
_Grafico.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
_Grafico.PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality
_Grafico.CompositingQuality = Drawing2D.CompositingQuality.HighQuality
Na hora de salvar devemos configurar algumas propriedades do codec escolhido, neste caso o JPG, devemos setar o fator de qualidade do codec.
Private Sub SalvaFotoPrincipal()
Dim fileName As String = "ImagemQualidadeAlta.jpg"
fileName = novoName
fileName = IO.Path.Combine(_PastaParaSalvar, fileName)
Dim info() As Drawing.Imaging.ImageCodecInfo = Drawing.Imaging.ImageCodecInfo.GetImageEncoders()
Dim params As New Drawing.Imaging.EncoderParameters(1)
//Adicionando parametro de qualidade para o formato jpg, deixando em 100% ou seja com compactação minima e qualidade maxima.
params.Param(0) = New Drawing.Imaging.EncoderParameter(Drawing.Imaging.Encoder.Quality, 100L)
//Busco as informações do codec JPG.
Dim myImageCodecInfo As Imaging.ImageCodecInfo = GetEncoderInfo(Drawing.Imaging.ImageFormat.Jpeg)
// Salvando a imagen passando os parametros.
_ImagemPrincipal.Save(fileName, myImageCodecInfo, params)
_ImagemPrincipal.Dispose()
End Sub
Private Shared Function GetEncoderInfo(ByVal format As Imaging.ImageFormat) As Imaging.ImageCodecInfo
Dim j As Integer
Dim encoders() As Imaging.ImageCodecInfo
encoders = Imaging.ImageCodecInfo.GetImageEncoders()
j = 0
While j < encoders.Length
If encoders(j).FormatID = format.Guid Then
Return encoders(j)
End If
j += 1
End While
Return Nothing
End Function
Ate mais.
Espero ter ajudado.
Nenhum comentário:
Postar um comentário