#------------------------------------------------------------------------------------------------------------------------------------------------ [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 } } } |