Public Module ImageConverter
Public Sub Main()
’ Ottiene un oggetto ImageCodecInfo che rappresenta il codec JPEG.
’ Viene ottenuto cercando il corrispondente tipo MIME.
Dim CodecInfo As ImageCodecInfo = GetEncoderInfo(“image/jpeg”)
’ Crea un oggetto Encoder basato sul parametro Quality.
Dim Enc As Encoder = Encoder.Quality
’ Crea l’array che conterrà i parametri di codifica.
’ In questo caso, conterrà solo il parametro qualità.
Dim EncParams As New EncoderParameters(1)
Dim Dir As New DirectoryInfo(Directory.GetCurrentDirectory())
Console.WriteLine(“Processing images in “ & Dir.FullName)
’ Recupera tutti i file bitmap nella directory corrente.
Dim File As FileInfo
For Each File In Dir.GetFiles(“*.bmp”)
Console.WriteLine(“Converting: “ & File.Name)
’ Carica l’immagine in memoria.
Dim Image As Image = Image.FromFile(File.FullName)
’ Crea un nuovo nome di file.
Dim JpgName As String
’ Salva la bitmap come file JPEG con un livello di qualità 25.
EncParams.Param(0) = New EncoderParameter(Enc, 25L)
JpgName = Path.GetFileNameWithoutExtension(File.FullName) & _
“25” & “.jpg”
Image.Save(JpgName, CodecInfo, EncParams)
Console.WriteLine(“Saved: “ & JpgName)
’ Salva la bitmap come file JPEG con un livello di qualità 50.
EncParams.Param(0) = New EncoderParameter(Enc, 50L)
JpgName = Path.GetFileNameWithoutExtension(File.FullName) & _
“50” & “.jpg”
Image.Save(JpgName, CodecInfo, EncParams)
Console.WriteLine(“Saved: “ & JpgName)
’ Salva la bitmap come file JPEG con un livello di qualità 75.
EncParams.Param(0) = New EncoderParameter(Enc, 75L)
JpgName = Path.GetFileNameWithoutExtension(File.FullName) & _
“75” & “.jpg”
Image.Save(JpgName, CodecInfo, EncParams)
Console.WriteLine(“Saved: “ & JpgName)
Console.WriteLine()
Next
Console.ReadLine()
End Sub
Private Function GetEncoderInfo(ByVal mimeType As String) _
As ImageCodecInfo
Dim i As Integer
Dim Encoders() As ImageCodecInfo = ImageCodecInfo.GetImageEncoders()
For i = 0 To Encoders.Length - 1
If Encoders(i).MimeType = mimeType Then
Return Encoders(i)
End If
Next
Return Nothing
End Function
End Module
L’output di questa applicazione console apparirà così:
Processing images in C:\Temp\Recipe 12-11\bin
Converting: test.bmp
Saved: test25.jpg
Saved: test50.jpg
Saved: test75.jpg