Kiedy masz dużo plików graficznych w bmp, warto jest zastanowić się nad zmiana formatu na jpeg. Pliki mają mniejszy rozmiar, a nie tracą tak bardzo na kompresji. Napisałem skrypt do konwertowania plików z jednego formatu na drugi. Wystarczy w kodzie wyselekcjonować pliki, które są bmp i w potoku wpisać nazwę funkcji:
gci -filter *.bmp | Convert-Jpeg
Poniżej cała implementacja funkcji zamieniająca bmp na jpeg:
[Reflection.Assembly]::LoadWithPartialName("System.Drawing") | Out-Null
function Convert-Jpeg {
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True,ValueFromPipeline=$True,ValueFromPipelinebyPropertyName=$True)]
[System.io.FileInfo] $filepath
)
BEGIN {
Write-Host "Converting Bitmaps to Jpegs"
$fileConvertedCounter= 0
}
PROCESS{
$filePathFullName = $filepath.FullName
if( Test-Path $filePathFullName)
{
$image = [System.Drawing.Image]::FromFile($filepath.FullName)
$bitmap = new-object System.Drawing.Bitmap($image)
$newFileName = ($filePathFullName -replace '([^.]).bmp','$1') + ".jpg"
$bitmap.Save($newFileName, ([system.drawing.imaging.imageformat]::jpeg))
$fileConvertedCounter++
Write-Host "Converted $filePathFullName into $newFileName"
$bitmap.Dispose()
$image.Dispose()
}else {
Write-Host "Path not found."
}
}
END{
Write-Host "It was $fileConvertedCounter converted files"
}
}
Brak komentarzy:
Prześlij komentarz