save JPEG images with any quality
(C# version of this article is here )
Here's the code! Too many people ask for this
Using this code you can save an image (System.Drawing.Image) item as a jpeg image, specifying the quality of it. Jpeg quality is the same as compression so the lower the quality, the smaller the file size. It's simple to use, ie just do this:
VB Code:
Dim myImage As Image = ' ... load the image somehow
' Save the image with a quality of 50%
SaveJpeg(destImagePath, myImage, 50)
VB Code:
' Please do not remove :)
' Written by Kourosh Derakshan
'
'add this!
Imports System.Drawing.Imaging
' Saves an image as a jpeg image, with the given quality
' Gets:
' path - Path to which the image would be saved.
' quality - An integer from 0 to 100, with 100 being the
' highest quality
Public Shared Sub SaveJpeg(ByVal path As String, ByVal img As Image, ByVal quality As Long)
If ((quality < 0) OrElse (quality > 100)) Then
Throw New ArgumentOutOfRangeException("quality must be between 0 and 100.")
End If
' Encoder parameter for image quality
Dim qualityParam As New EncoderParameter(Encoder.Quality, quality)
' Jpeg image codec
Dim jpegCodec As ImageCodecInfo = GetEncoderInfo("image/jpeg")
Dim encoderParams As New EncoderParameters(1)
encoderParams.Param(0) = qualityParam
img.Save(path, jpegCodec, encoderParams)
End Sub
' Returns the image codec with the given mime type
Private Shared Function GetEncoderInfo(ByVal mimeType As String) As ImageCodecInfo
' Get image codecs for all image formats
Dim codecs As ImageCodecInfo() = ImageCodecInfo.GetImageEncoders()
' Find the correct image codec
For i As Integer = 0 To codecs.Length - 1
If (codecs(i).MimeType = mimeType) Then
Return codecs(i)
End If
Next i
Return Nothing
End Function
Re: save JPEG images with any quality
hm... i have a problem with these lines in vb.net 2008
ublic Shared Sub SaveJpeg(ByVal path As String, ByVal img As Image, ByVal quality As Long)
Private Shared Function GetEncoderInfo(ByVal mimeType As String) As ImageCodecInfo
statement is not valid in a namespace
Re: save JPEG images with any quality
Hi MrPolite .... Good Topic
Hi Jarck , the code need a little bet modification to work fine with you
I tested it and works fine for me , make a new project and clear any lines before you paste the code :
Imports System.Drawing.Imaging 'this statement must be at the topmost of any code inside a class.
Public Class Form1
' Please do not remove :)
' Written by Kourosh Derakshan
'
'add this!
' Saves an image as a jpeg image, with the given quality
' Gets:
' path - Path to which the image would be saved.
' quality - An integer from 0 to 100, with 100 being the
' highest quality
Public Shared Sub SaveJpeg(ByVal path As String, ByVal img As Image, ByVal quality As Long)
If ((quality < 0) OrElse (quality > 100)) Then
Throw New ArgumentOutOfRangeException("quality must be between 0 and 100.")
End If
' Encoder parameter for image quality
Dim qualityParam As New EncoderParameter(Encoder.Quality, quality)
' Jpeg image codec
Dim jpegCodec As ImageCodecInfo = GetEncoderInfo("image/jpeg")
Dim encoderParams As New EncoderParameters(1)
encoderParams.Param(0) = qualityParam
img.Save(path, jpegCodec, encoderParams)
End Sub
' Returns the image codec with the given mime type
Private Shared Function GetEncoderInfo(ByVal mimeType As String) As ImageCodecInfo
' Get image codecs for all image formats
Dim codecs As ImageCodecInfo() = ImageCodecInfo.GetImageEncoders()
' Find the correct image codec
For i As Integer = 0 To codecs.Length - 1
If (codecs(i).MimeType = mimeType) Then
Return codecs(i)
End If
Next i
Return Nothing
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'You can add this piece of code inside a Button_Click event or any event you like.
Dim myImage As Image = Image.FromFile("E:\a7.jpg") 'Replace the "E:\a7.jpg" with path of your own image
' Save the image with a quality of 50%
SaveJpeg("C:\FFF.Jpg", myImage, 50) 'Replace the "C:\f7.jpg" with path where you want your image to be saved.
End Sub
End Class
I hope that helped.
Re: save JPEG images with any quality
ooh god....
I know im noob...
sorry for my stupid question:blush:
Re: save JPEG images with any quality
Quote:
Originally Posted by
ashraf fawzy
Hi MrPolite .... Good Topic
Hi Jarck , the code need a little bet modification to work fine with you
I tested it and works fine for me , make a new project and clear any lines before you paste the code :
I hope that helped.
Absolutely helped me. I was debating converting images to grayscale and I was trying to avoid using DLLs that break between Windows versions (or have the potential to). I take an image, dither it down to 8-bit grayscale, and then use this code to save it at 10% (since it's just a reverse side of the check). The file size is 1/5 or less of what it would be otherwise. Thank you for saving me a lot of headache. :)
Lauren