http://ShareText.org/FRX4    Print | Wrap on  | Post
#------------------------------------------------------------------------------------------------------------------------------------------------
[reflection.assembly]::LoadWithPartialName("System.Drawing") #načítame si extednú knihovnu windiwsu

function cutImage #vlastná funkcia na rezanie obrázka
{param ($Name, $saveName, $unit) #parametre
$OldBitmap = new-object System.Drawing.Bitmap ($Name+".jpg") #načítame obrázok
if ($error.count -ne 0) { #zachytíme prípadné chybové hlásenie do súboru
$error | out-file "C:konvertovanepowerShellLog.txt" -append -encoding default
$error[($error.count-1)].TargetObject | out-file "C:konvertovanepowerShellLog.txt" -append -encoding default
echo $_>>"powerShellLog.txt"
$error.clear()
}
$w=[int]($OldBitmap.Width/2) #zistíme si správny pomer strán, a zaokrúhlime ich(vložíme do typu bez desatinej čiarky)
$h=[int]($OldBitmap.Height/2)
$NewBitmap = new-object System.Drawing.Bitmap $w,$h #vytvoríme prázdny obrazok z požadovanou velkostou
$g=[System.Drawing.Graphics]::FromImage($NewBitmap) #prevezneme si z neho kresliacu oblast
$g.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::HighQualityBicubic #nastavíme kvalitu vykreslovania
$rect = new-object Drawing.Rectangle 0, 0, $w, $h #vytvoríme si cielovú mierku
if (!(Test-Path ($saveName+"-1-1.jpg"))) #testujeme či obrázok existuje
{
$rect2 = new-object Drawing.Rectangle 0, 0, $w, $h #vytvoríme si zdrojovú mierku
$g.DrawImage($OldBitmap, $rect, $rect2, $unit) #vykreslíme obrázok podla zdrojovej mierky, do cielovej mierky
$NewBitmap.Save($saveName+"-1-1.jpg", ([system.drawing.imaging.imageformat]::jpeg)) #obrázok uložíme
}
if (!(Test-Path ($saveName+"-1-2.jpg")))
{
$rect2 = new-object Drawing.Rectangle $w, 0, $w, $h
$g.DrawImage($OldBitmap, $rect, $rect2, $unit)
$NewBitmap.Save($saveName+"-1-2.jpg", ([system.drawing.imaging.imageformat]::jpeg))
}
if (!(Test-Path ($saveName+"-2-1.jpg")))
{
$rect2 = new-object Drawing.Rectangle 0, 0, $w, $h
$g.DrawImage($OldBitmap, $rect, $rect2, $unit)
$NewBitmap.Save($saveName+"-2-1.jpg", ([system.drawing.imaging.imageformat]::jpeg))
}
if (!(Test-Path ($saveName+"-2-2.jpg")))
{
$rect2 = new-object Drawing.Rectangle $w, $h, $w, $h
$g.DrawImage($OldBitmap, $rect, $rect2, $unit)
$NewBitmap.Save($saveName+"-2-2.jpg", ([system.drawing.imaging.imageformat]::jpeg))
}
if (!(Test-Path ($saveName+"-preview.jpg"))) #testujeme či už existuje miniatúra
{
$rect = new-object Drawing.Rectangle 0, 0, 300, 300 #velkost miniatúry
$g.DrawImage($OldBitmap, $rect) #vykresl9me miniatúru
$NewBitmap.Save($saveName+"-preview.jpg", ([system.drawing.imaging.imageformat]::jpeg)) # ulo69me miniat[ru
}


$NewBitmap.Dispose() #vymažeme objekty z pameti
$OldBitmap.Dispose()
$g.Dispose()
}

#samotný skript
#------------------------------------
$filename="C:obrazky"
$export_file="C:obrazky/konvertovane"
#------------------------------------
$units = [System.Drawing.GraphicsUnit]::Pixel # nastavenie ktorý určuje typ kopírovania
CD $filename # presunieme sa do zložky

foreach ($podzlozka in get-Childitem $filename) #prehliadame zložku
{
if (!(Test-Path ("$export_file$podzlozka"))) { # testujeme či zložka neexistuje
[IO.Directory]::CreateDirectory("$export_file$podzlozka") # vytvárame zloku pomocou externej knihovny IO.Directory
}
foreach ($podPodSlozka in get-Childitem $filename$podzlozka)
{
if (!(Test-Path ("$export_file$podzlozka$podPodSlozka"))) {
[IO.Directory]::CreateDirectory("$export_file$podzlozka$podPodSlozka")
}
foreach ($obrazok in Get-ChildItem $filename$podzlozka$podPodSlozka*.jpg)
{
$nname=$stvrtky.Name.Replace(".jpg","") #vymažeme z názvu príponu kôli pomenovaniu rozrezaných štvrtiek
$lname="$filename$podzlozka$podPodSlozka$nname" #knihovna graphics vyžaduje plný názov cesty
$sname="$export_file$podzlozka$podPodSlozka$nname"
cutImage $lname $sname $units #voláme vlastnú funkciu
}
}
}