Bildgröße (Abmessungen) ermitteln

  • Ich habe das Script auch mal getestet und am Anfang hat es auch funktioniert. Nach einer Weile aber nicht mehr ?( . Ich habe alles was ich geändert hatte wieder geStrg+Zet, aber das funktionierte trotzdem nicht :(. Ich habe keine Ahnung warum.

    Spoiler anzeigen
    [autoit]

    #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()
    ;----------------------

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit]

    Rechtschreibfehler sind Spezialeffekte meiner Tastatur.