Save an image as a .jpg and specify compression ratio:
Private Class JpegTools
Private codecs As ImageCodecInfo() = ImageCodecInfo.GetImageEncoders()
Private quality As Long
Public ici As ImageCodecInfo = Nothing
Public ep As New EncoderParameters()
Public compressionRatio As Long
Public Sub new(ByVal _compressionRatio As Long, Optional ByRef errMsg As String = "")
compressionRatio = _compressionRatio
If compressionRatio < 0 then compressionRatio = 0
If compressionRatio > 100 then compressionRatio = 100
quality = (100 - compressionRatio)
Try
For Each codec As ImageCodecInfo In codecs
If codec.MimeType = "image/jpeg" Then
ici = codec
End If
Next
ep.Param(0) = New EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality)
Catch ex As Exception
errMsg = ex.Message
End Try
End Sub
End Class
Private JpgTools As JpegTools
Public Function SaveImgToFile(ByRef img As Image, ByVal fullPathWithFileName As String, ByVal compressionRatio As Long, _
Optional ByRef errMsg As String = "") As Boolean
If JpgTools Is Nothing Then JpgTools = New JpegTools(compressionRatio, errMsg)
If JpgTools.compressionRatio <> compressionRatio then JpgTools = New JpegTools(compressionRatio, errMsg)
If errMsg <> "" then Return False
Try
img.Save(fullPathWithFileName, JpgTools.ici, JpgTools.ep)
Catch ex As Exception
errMsg = ex.Message
Return False
End Try
Return True
End Function