13/05/2008
Convertire un set di immagini da un formato all'altro
Tag: Nessun tag disponibile.
Sebbene l'attività sui batch di immagini sia solitamente effettuata da un grafico mediante software appositi, utilizzando Windows PowerShell è possibile sfruttare le potenzialita del framework Microsoft .NET per accedere ed elaborare le immagini.
In questo snippet viene illustrata una semplice tecnica di elaborazione e conversione delle immagini da un formato ad un altro (da Gif a Jpeg, ma i formati disponibili sono vari), utilizzando le impostazioni di default offerte dai codec interessati.
# Carica l'assembly System.Drawing
[Reflection.Assembly]::LoadWithPartialName("System.Drawing") |
Out-Null
# Impostazione dei parametri dello snippet
$oldExtension = '.gif'
$newExtension = '.jpg'
$newFormat = [Drawing.Imaging.ImageFormat]::Jpeg
# Scansione dei file con l'estensione indicata
Get-ChildItem "*$oldExtension" |
ForEach-Object {
# Ricava il nome del nuovo file
$newFileName = [IO.Path]::ChangeExtension($_, $newExtension)
# Apre l'immagine sorgente...
$image = [Drawing.Image]::FromFile($_.FullName)
# ...e la memorizza col nuovo formato, col nuovo nome
$fsNewFile = [IO.File]::OpenWrite($newFileName)
$image.Save($fsNewFile, $newFormat)
$fsNewFile.Close()
}
I formati disponibili nativamente utilizzando l'infrastruttura fornita dal framework sono recuperabili eseguendo questo semplice script, che elenca le proprietà statiche del tipo System.Drawing.Imaging.ImageFormat:
[Drawing.Imaging.ImageFormat] |
Get-Member -MemberType Properties -Static