-
Jun 5th, 2005, 05:43 PM
#1
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
Last edited by MrPolite; Jun 5th, 2005 at 08:38 PM.
rate my posts if they help ya!
Extract thumbnail without reading the whole image file: (C# - VB)
Apply texture to bitmaps: (C# - VB)
Extended console library: (VB)
Save JPEG with a certain quality (image compression): (C# - VB )
VB.NET to C# conversion tips!!
-
Jan 9th, 2010, 09:46 AM
#2
Member
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
-
Jan 11th, 2010, 01:50 PM
#3
Addicted Member
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.
Some times when you make a step forward ...You can't get back. Be sure where you make your steps.
-
Jan 12th, 2010, 05:40 AM
#4
Member
Re: save JPEG images with any quality
ooh god....
I know im noob...
sorry for my stupid question
-
Jun 2nd, 2015, 09:22 AM
#5
New Member
Re: save JPEG images with any quality
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
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|