Hi,
ich habe ein Problem bei meinem Skript.
Und zwar möchte ich die Maße eines Bildes
herausfinden. Wie kann ich das machen?
MfG
qiyy
Hi,
ich habe ein Problem bei meinem Skript.
Und zwar möchte ich die Maße eines Bildes
herausfinden. Wie kann ich das machen?
MfG
qiyy
GDI+:
_GDIPlus_ImageGetWidth
_GDIPlus_ImageGetHeight
Danke, aber ich habe vergessen zu erwähnen,
dass die Maße des zu ermittelnden Bildes in
einem Verzeichnis liegen. Also es ist noch nicht
im GUI eingebaut.
MfG
qixx
_GDIPlus_LoadImagefromFile
Die Funktion gibt es gar nicht? oO
MfG
qixx
Oh Sorry das war _GDIPlus_ImageLoadFromFile
Gut, danke.
MfG
qixx
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.
#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