Die Seite hat noch einige Sicherheitslücken, die Chip versucht zu beheben.
Druch das beheben funktionieren jedoch manche Sachen nicht mehr.
Chip hat leider wenig Zeit (Beruf und privates gehen natürlich vor
)
Die Seite hat noch einige Sicherheitslücken, die Chip versucht zu beheben.
Druch das beheben funktionieren jedoch manche Sachen nicht mehr.
Chip hat leider wenig Zeit (Beruf und privates gehen natürlich vor
)
würde es silent mit den Parametern "/q /norestart" installieren ![]()
du mußt bei Zahlen . statt , verwenden
[autoit]MsgBox(0, " ", "Breite: " & (195 / 1360 * @DesktopWidth) & " Test Breite " & @DesktopWidth * (0.147916667 - ((@DesktopWidth - 1920) / (-640) * 0.001760566)))
[/autoit]$Input2 = GUICtrlCreateInput("", 64, 72, 273, 21, $ES_PASSWORD)
Das hat Greenhorn gemeint ![]()
bei Inputbox beim 4. Parameter (password char) "*" angeben
Danke UEZ,
nun hab ich keine Fragen mehr ![]()
Wow, sieht sehr gut aus.
Nochmals eine allerletzte Frahe an dich UEZ.
Wie siehst du meine Frage in Post 11
Nun will ich das Bild noch um 90° drehen.
Ich hab zwar das Bsp aus der Hilfe gefunden, jedoch will ich das Bild nicht speichern, sondern nur anzeigen
#include <GDIPlus.au3>
#include <ScreenCapture.au3>
Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]_Main()
[/autoit] [autoit][/autoit] [autoit]Func _Main()
Local $hBitmap, $hImage, $sCLSID, $tData, $tParams
; Erstellt vom kompletten Bildschirm einen Screenshot
_ScreenCapture_Capture(@MyDocumentsDir & "\GDIPlus_Image.jpg")
; Initialisiert (startet) Microsoft Windows GDI+
_GDIPlus_Startup()
; Lädt ein Bild
$hImage = _GDIPlus_ImageLoadFromFile(@MyDocumentsDir & "\GDIPlus_Image.jpg")
; Gibt die Encoder CLSID für einen festgelegten Bild-Dateityp zurück
$sCLSID = _GDIPlus_EncodersGetCLSID("JPG")
; Setzt die Parameter für eine 90 Grad Rotation
$tData = DllStructCreate("int Data")
DllStructSetData($tData, "Data", $GDIP_EVTTRANSFORMROTATE90)
$tParams = _GDIPlus_ParamInit(1)
_GDIPlus_ParamAdd($tParams, $GDIP_EPGTRANSFORMATION, 1, $GDIP_EPTLONG, DllStructGetPtr($tData, "Data"))
; Speichert das gedrehte Bild
_GDIPlus_ImageSaveToFileEx($hImage, @MyDocumentsDir & "\GDIPlus_Image2.jpg", $sCLSID, DllStructGetPtr($tParams))
; Gibt die durch Microsoft Windows GDI+ verwendeten Ressourcen wieder frei
_GDIPlus_Shutdown()
EndFunc ;==>_Main
[/autoit]Noch ne eher allgemeine Frage zu GDIplus.
Gibt es eigentliche Nachteile wenn _GDIPlus_Startup() mehrmals aufgerufen wird ohne vorher durch _GDIPlus_Shutdown() beendet worden zu sein?
Es würde ja mehrere Möglichkeiten geben wo _GDIPlus_Startup() und _GDIPlus_Shutdown() hingeschrieben wird.
V1
#include <GDIPlus.au3>
[/autoit] [autoit][/autoit] [autoit]$Pic = _PNGtoJPG(@ScriptDir&"\DeinBild.png") ;Pfad zur .png
$Pic = _PNGtoJPG(@ScriptDir&"\DeinBild1.png") ;Pfad zur .png
$Pic = _PNGtoJPG(@ScriptDir&"\DeinBild2.png") ;Pfad zur .png
$Pic = _PNGtoJPG(@ScriptDir&"\DeinBild3.png") ;Pfad zur .png
Func _PNGtoJPG($PNG)
Local $hImage, $sCLSID
Local $File = FileGetLongName($PNG)
_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile($File)
$sCLSID = _GDIPlus_EncodersGetCLSID("JPG")
Local $NewJpg = StringTrimRight($File, 4)&".jpg"
Local $Check = _GDIPlus_ImageSaveToFileEx($hImage, $NewJpg, $sCLSID)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
If $Check = True Then
Return($NewJpg) ;Pfad zur neu erstellten .jpg
ElseIf $Check = False Then
Return(-1) ; ansonsten Rückgabewert "-1"
EndIf
EndFunc ;==>_PNGtoJPG
V2
#include <GDIPlus.au3>
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$Pic = _PNGtoJPG(@ScriptDir&"\DeinBild.png") ;Pfad zur .png
$Pic = _PNGtoJPG(@ScriptDir&"\DeinBild1.png") ;Pfad zur .png
$Pic = _PNGtoJPG(@ScriptDir&"\DeinBild2.png") ;Pfad zur .png
$Pic = _PNGtoJPG(@ScriptDir&"\DeinBild3.png") ;Pfad zur .png
_GDIPlus_Shutdown()
[/autoit] [autoit][/autoit] [autoit]Func _PNGtoJPG($PNG)
Local $hImage, $sCLSID
Local $File = FileGetLongName($PNG)
$hImage = _GDIPlus_ImageLoadFromFile($File)
$sCLSID = _GDIPlus_EncodersGetCLSID("JPG")
Local $NewJpg = StringTrimRight($File, 4)&".jpg"
Local $Check = _GDIPlus_ImageSaveToFileEx($hImage, $NewJpg, $sCLSID)
_GDIPlus_ImageDispose($hImage)
If $Check = True Then
Return($NewJpg) ;Pfad zur neu erstellten .jpg
ElseIf $Check = False Then
Return(-1) ; ansonsten Rückgabewert "-1"
EndIf
EndFunc ;==>_PNGtoJPG
V3
#include <GDIPlus.au3>
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$Pic = _PNGtoJPG(@ScriptDir&"\DeinBild.png") ;Pfad zur .png
$Pic = _PNGtoJPG(@ScriptDir&"\DeinBild1.png") ;Pfad zur .png
$Pic = _PNGtoJPG(@ScriptDir&"\DeinBild2.png") ;Pfad zur .png
$Pic = _PNGtoJPG(@ScriptDir&"\DeinBild3.png") ;Pfad zur .png
_GDIPlus_Shutdown()
[/autoit] [autoit][/autoit] [autoit]Func _PNGtoJPG($PNG)
Local $hImage, $sCLSID
Local $File = FileGetLongName($PNG)
_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile($File)
$sCLSID = _GDIPlus_EncodersGetCLSID("JPG")
Local $NewJpg = StringTrimRight($File, 4)&".jpg"
Local $Check = _GDIPlus_ImageSaveToFileEx($hImage, $NewJpg, $sCLSID)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
If $Check = True Then
Return($NewJpg) ;Pfad zur neu erstellten .jpg
ElseIf $Check = False Then
Return(-1) ; ansonsten Rückgabewert "-1"
EndIf
EndFunc ;==>_PNGtoJPG
Für was ist ";~ GUICtrlSetState(-1, $GUI_DISABLE)" in Zeile 20 notwendig?
Wow ![]()
funktioniert sehr gut.
Muß man unbedingt 2x GuiCtrlCreatePic nehmen?
Oder geht es so wie im Skript.
#region ;************ Includes ************
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#endregion ;************ Includes ************
Opt("GUIOnEventMode", 1) ; 0=ausgeschaltet, 1=OnEvent Modus aktiviert
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Global Const $IMAGE_BITMAP = 0
Global Const $STM_SETIMAGE = 0x0172
Global $hPreviewBitmap
Global $datei1 = "C:\Windows\Web\Wallpaper\Windows\img0.jpg"
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_Startup() ;Vorschau
[/autoit] [autoit][/autoit] [autoit]Global $hPreviewGui = GUICreate("Foto", 710, 300)
Global $idPreviewPic = GUICtrlCreatePic("", 10, 10, 300, 200)
GUICtrlSetState(-1, $GUI_DISABLE)
;~ Global $idPreviewPic2 = GUICtrlCreatePic("", 400, 10, 300, 200)
;~ GUICtrlSetState(-1, $GUI_DISABLE)
Global $idButtonLoad = GUICtrlCreateButton("Laden", 400, 250, 60, 40)
GUICtrlSetOnEvent(-1, "Load")
GUISetOnEvent($GUI_EVENT_CLOSE, "_beenden")
_PreviewLoadImage($datei1, $idPreviewPic, 300, 200)
GUISetState()
While 1
Sleep(10)
WEnd
Func _beenden()
_GDIPlus_Shutdown()
Exit
EndFunc ;==>_beenden
Func Load()
Local $file = FileOpenDialog("Suche ein Bild aus", "", "Bilder (*.jpg;*png;*.bmp;*.gif)")
If @error Then Return
;~ _PreviewLoadImage($file, $idPreviewPic2, 300, 200)
_PreviewLoadImage($file, $idPreviewPic, 300, 200)
EndFunc ;==>Load
Func _PreviewLoadImage($sImgFile, $CtrlID, $iW, $iH, $iInterpolationMode = 7)
Local $hImage = _GDIPlus_ImageLoadFromFile($sImgFile)
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iW, "int", $iH, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
Local $hBitmap = $aResult[6]
Local $hGfxCtxt = _GDIPlus_ImageGetGraphicsContext($hBitmap)
DllCall($ghGDIPDll, "uint", "GdipSetInterpolationMode", "handle", $hGfxCtxt, "int", $iInterpolationMode)
_GDIPlus_GraphicsDrawImageRect($hGfxCtxt, $hImage, 0, 0, $iW, $iH)
Local $hHBitmap = _GDIPlus_BitmapCreateDIBFromBitmap($hBitmap)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_GraphicsDispose($hGfxCtxt)
_WinAPI_DeleteObject(GUICtrlSendMsg($CtrlID, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBitmap))
EndFunc ;==>_PreviewLoadImage
Func _GDIPlus_BitmapCreateDIBFromBitmap($hBitmap)
Local $tBIHDR, $Ret, $tData, $pBits, $hResult = 0
$Ret = DllCall($ghGDIPDll, 'uint', 'GdipGetImageDimension', 'ptr', $hBitmap, 'float*', 0, 'float*', 0)
If (@error) Or ($Ret[0]) Then Return 0
$tData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $Ret[2], $Ret[3], $GDIP_ILMREAD, $GDIP_PXF32ARGB)
$pBits = DllStructGetData($tData, 'Scan0')
If Not $pBits Then Return 0
$tBIHDR = DllStructCreate('dword;long;long;ushort;ushort;dword;dword;long;long;dword;dword')
DllStructSetData($tBIHDR, 1, DllStructGetSize($tBIHDR))
DllStructSetData($tBIHDR, 2, $Ret[2])
DllStructSetData($tBIHDR, 3, $Ret[3])
DllStructSetData($tBIHDR, 4, 1)
DllStructSetData($tBIHDR, 5, 32)
DllStructSetData($tBIHDR, 6, 0)
$hResult = DllCall('gdi32.dll', 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBIHDR), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'dword', 0)
If (Not @error) And ($hResult[0]) Then
DllCall('gdi32.dll', 'dword', 'SetBitmapBits', 'ptr', $hResult[0], 'dword', $Ret[2] * $Ret[3] * 4, 'ptr', DllStructGetData($tData, 'Scan0'))
$hResult = $hResult[0]
Else
$hResult = 0
EndIf
_GDIPlus_BitmapUnlockBits($hBitmap, $tData)
Return $hResult
EndFunc ;==>_GDIPlus_BitmapCreateDIBFromBitmap
Hat deine Version Nachteile gegenüber meiner Version aus dem ersten Post ![]()
Sorry, verstehe nur Bahnhof.
Wofür eine Animation ![]()
Außerdem will ich die Größe des Bildes beim erstellen selbst bestimmen können.
Es soll nachträglich noch ein anderes Bild geladen werden können (statt dem bereits vorhandenen.
Nein, es kommt noch mehr in die GUI rein ![]()
Hi,
folgendes Skript funktioniert so weit ganz gut
#region ;************ Includes ************
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#endregion ;************ Includes ************
Opt("GUIOnEventMode", 1) ; 0=ausgeschaltet, 1=OnEvent Modus aktiviert
[/autoit] [autoit][/autoit] [autoit]Global $hPreviewBitmap
[/autoit] [autoit][/autoit] [autoit]Global $datei1 = "C:\Windows\Web\Wallpaper\Windows\img0.jpg"
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_Startup() ;Vorschau
[/autoit] [autoit][/autoit] [autoit]Global $hPreviewGui = GUICreate("Foto", 350, 250)
Global $hPreviewGraphic = _GDIPlus_GraphicsCreateFromHWND($hPreviewGui)
GUISetOnEvent($GUI_EVENT_CLOSE, "_beenden")
GUISetState()
_PreviewLoadImage($datei1)
GUIRegisterMsg($WM_PAINT, 'WM_PAINT')
While 1
Sleep(10)
WEnd
Func _beenden()
_GDIPlus_BitmapDispose($hPreviewBitmap)
_GDIPlus_GraphicsDispose($hPreviewGraphic)
_GDIPlus_Shutdown()
Exit
EndFunc ;==>_beenden
Func _PreviewLoadImage($sImgFile)
$hPreviewBitmap = _GDIPlus_BitmapCreateFromFile($sImgFile)
_GDIPlus_GraphicsDrawImageRect($hPreviewGraphic, $hPreviewBitmap, 10, 10, 300, 200)
EndFunc ;==>_PreviewLoadImage
Func WM_PAINT($hWnd, $Msg, $wParam, $lParam)
If $hWnd = $hPreviewGui Then _GDIPlus_GraphicsDrawImageRect($hPreviewGraphic, $hPreviewBitmap, 10, 10, 300, 200)
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_PAINT
Wenn ich jedoch die GUI teilweise aus dem Bildschirm rein- und wieder rausschiebe, so ruckelt die GUI etwas.
Dies leigt wohl am neuzeichnen der Grafik.
Kann man dies irgendwie verhindern?
Getestet mit Win 7 64bit.
Hi,
nach 1,5 Jahren ist es wieder soweit.
Durch die neue Finalversion 3.3.8.1 sollten wir die deutsche Hilfe wieder aktualisieren.
Momentan funktioniert die altbewährte Übersetzseite noch nicht, aber ich bin mir sicher wir bekommen auch dies hin.
Durch die neue Version hat sich viel verändert:
0 ungültige Funktionen, Beispiele, htm-Seiten
46 neue Funktionen, Beispiele, htm-Seiten
3401 geänderte Funktionen, Beispiele, htm-Seiten
Nur gemeinsam können wir dies schaffen.
Wir benötigen fleißige Übersetzer und Kontrollleser.
Wenn die Übersetzseite wieder online ist wird es hier verkündet.
Ich hoffe wir können auf euch zählen ![]()
steht doch in der console drin was fehlt
ZitatC:\test.au3(44,3) : ERROR: missing EndIf.
Danke euch für die hilfreichen Antworten ![]()
Der Link von Cheater Dieter enthält die Lösung.
Danke ![]()
Hi,
Man kann ja eine Datei vom Explorer auf eine GUI ziehen.
So kann man den Dateinamen der Datei ermitteln.
Gibt es auch eine Möglichkeitden Dateinamen einer im Explorer markierten Datei in der GUI ohne Drag und Drap anzeigen zu lassen ![]()
Schau dir die Hilfe genauer an.
Der fehlt in deinem Script der Eintrag "#include <Date.au3>"