Ich habe mir jetzt folgendes Script zusammengebastelt:
Spoiler anzeigen
#RequireAdmin
#include <GDIPlus.au3>
If FileExists(@TempDir&"\PU_Folder.txt") Then
$StandPath=FileRead(@TempDir&"\PU_Folder.txt")
Else
$StandPath=@UserProfileDir&"\"
EndIf
$AllFiles=FileOpenDialog("Picture Uploader",$StandPath,"Fotos (*.jpg)",5)
;--Bilder zu Arrays--
If StringInStr($AllFiles,"|") Then
;Mehrere Dateien
$File=StringSplit($AllFiles,"|")
$Path=StringTrimRight(StringLeft($AllFiles,StringInStr($AllFiles,"|")),1)
$NuOfFiles=_GetCharacterInStr($AllFiles,"|")
Dim $FullFile[$NuOfFiles]
For $i=0 To $NuOfFiles-1
$FullFile[$i]=$Path&"\"&$File[$i+2]
Next
Else
Dim $FullFile[1]
$FullFile[0]=$AllFiles
$NuOfFiles=1
EndIf
;-Bilder in Temp-Ordner kopieren-
ProgressOn("Picture Uploader","Dateien kopieren")
ProgressSet(0)
DirCreate(@TempDir&"\PictureUploader")
For $i=1 To $NuOfFiles
ProgressSet(100/$NuOfFiles*$i)
FileCopy($FullFile[$i-1],@TempDir&"\PictureUploader\Pic_"&$i&".jpg",1)
Next
ProgressOff()
;-Bilder verkleinern-
ProgressOn("Picture Uploader","Bilder verkleinern")
ProgressSet(0)
For $i=1 To $NuOfFiles
ProgressSet(100/$NuOfFiles*$i)
_GDIPlus_Startup()
$image=_GDIPlus_ImageLoadFromFile("C:\Users\Conrad\AppData\Local\Temp\PictureUploader\Pic_6.jpg")
$width=_GDIPlus_ImageGetWidth($image)
$height=_GDIPlus_ImageGetHeight($image)
$ZuWidth=$width*500/$height
_GDIPlus_Shutdown()
_ImageResize(@TempDir&"\PictureUploader\Pic_"&$i&".jpg",@TempDir&"\PictureUploader\Pic_"&$i&"_s.jpg",$ZuWidth,500)
Next
Func _ImageResize($sInImage, $sOutImage, $iW, $iH)
Local $hWnd, $hDC, $hBMP, $hImage1, $hImage2, $hGraphic, $CLSID, $i = 0
$hWnd = _WinAPI_GetDesktopWindow()
$hDC = _WinAPI_GetDC($hWnd)
$hBMP = _WinAPI_CreateCompatibleBitmap($hDC, $iW, $iH)
_WinAPI_ReleaseDC($hWnd, $hDC)
_GDIPlus_Startup()
$hImage1 = _GDIPlus_BitmapCreateFromHBITMAP($hBMP)
$hImage2 = _GDIPlus_ImageLoadFromFile($sInImage)
$hGraphic = _GDIPlus_ImageGetGraphicsContext($hImage1)
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hImage2, 0, 0, $iW, $iH)
$CLSID = _GDIPlus_EncodersGetCLSID("JPG")
_GDIPlus_ImageSaveToFileEx($hImage1, $sOutImage, $CLSID)
_GDIPlus_ImageDispose($hImage1)
_GDIPlus_ImageDispose($hImage2)
_GDIPlus_GraphicsDispose($hGraphic)
_WinAPI_DeleteObject($hBMP)
_GDIPlus_Shutdown()
EndFunc ;==>_ImageResize
ProgressOff()
;----------------------
Func _GetCharacterInStr($String, $Character)
Local $Number = 0
$Str = StringSplit($String, "")
For $i = 1 To $Str[0]
$StrComp = StringCompare($Str[$i], $Character, 2)
If $StrComp = 0 Then
$Number += 1
EndIf
Next
Return $Number
EndFunc
Das funktioniert bei mir leider nicht. Die Bilder werden kopiert, aber anschließend nicht mehr verkleinert :pinch: . Komischerweise funktionierte das davor aber noch (ich habs mit Strg+Z zurückgesetzt). Könnt ihr mir sagen, was falsch ist oder wenigstens, ob das bei euch funzt?
Greetz