13/05/2008

Convertire un set di immagini da un formato all'altro

A cura di Efran Cobisi
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

Commenti



Nessun commento disponibile.

Cobisi EmailVerify.NET is a Microsoft .NET software component that validates email addresses. valid email