1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. FichteFoll

Beiträge von FichteFoll

  • Bild größe und Dateinamen änderen

    • FichteFoll
    • 27. Februar 2010 um 21:19

    Naja, ich hatte ein wenig Langeweile und mich mal damit probiert.

    Der Nachteil ist: Es funktioniert nicht!

    Deswegen muss nochmal jemand drüber schauen, weil ich das Problem nicht kenne.

    Das Konvertieren funktioniert natürlich, nur die Auflösung zu ändern nicht. Das Bild hat danach immer eine Größe von 631 Bytes und ist ein Pixel....

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Include <GDIPlus.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Bild des Monats | Umbenenner (All to .jpg)", 431, 205)
    GUISetBkColor(0xA0A0A4)
    $Input1 = GUICtrlCreateInput("", 8, 24, 305, 21)
    $hBtn_Search = GUICtrlCreateButton("Durchsuchen", 320, 22, 97, 25)
    $Label1 = GUICtrlCreateLabel("Bild wählen", 8, 8, 58, 17)
    GUICtrlSetColor(-1, 0xFFFFFF)
    $Progress1 = GUICtrlCreateProgress(64, 120, 305, 9)
    $Label2 = GUICtrlCreateLabel("Status..:", 16, 120, 43, 17)
    GUICtrlSetColor(-1, 0xFFFFFF)
    $Label4 = GUICtrlCreateLabel("Größe änderen", 16, 144, 75, 17)
    GUICtrlSetColor(-1, 0xFFFFFF)
    $Inp_X = GUICtrlCreateInput("1024", 104, 136, 33, 21)
    $Label5 = GUICtrlCreateLabel("X", 144, 137, 15, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0xFFFFFF)
    $Inp_Y = GUICtrlCreateInput("1024", 168, 136, 33, 21)
    $Label6 = GUICtrlCreateLabel("Pixel", 208, 137, 36, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0xFFFFFF)
    $hBtn_Rename = GUICtrlCreateButton("Nur Konvertieren", 144, 168, 91, 25)
    $hBtn_Resize = GUICtrlCreateButton("Größe ändern", 240, 168, 107, 25)
    $Input2 = GUICtrlCreateInput("", 8, 88, 313, 21)
    $hBtn_Search2 = GUICtrlCreateButton("Durchsuchen", 328, 85, 75, 25)
    $Label7 = GUICtrlCreateLabel("Speicherort", 8, 64, 58, 17)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hBtn_Search
    $szPath = FileOpenDialog("Bild öffnen", "", "Bilder (*.jpg;*.bmp;*.png)", 3) ; Datei auswählen
    If Not @error Then
    GUICtrlSetData($Input1, $szPath)
    $szPath = StringReplace($szPath, StringTrimLeft($szPath, StringInStr($szPath, ".", "", -1) ), "jpg")
    GUICtrlSetData($Input2, $szPath)
    EndIf

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

    Case $hBtn_Search2
    $szPath = FileOpenDialog("Speichern unter", "", "JPG-Bild (*.jpg)", 3) ; Datei auswählen
    If Not @error Then GUICtrlSetData($Input2, $szPath)

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

    Case $hBtn_Resize
    _ImageResize()

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

    ;~ $fScaleX = GUICtrlRead($Inp_X) / _GDIPlus_ImageGetWidth($hImage) ; Ermittle die Größenverhältnisse
    ;~ $fScaleY = GUICtrlRead($Inp_Y) / _GDIPlus_ImageGetHeight($hImage)
    ;~ If (_GDIPlus_ImageGetWidth($hImage) * $fScaleY) <= GUICtrlRead($Inp_X) Then ; Richtigen Faktor ermitteln
    ;~ $fScale = $fScaleX
    ;~ Else
    ;~ $fScale = $fScaleY
    ;~ EndIf

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

    ;~ $hMatrix = _GDIPlus_MatrixCreate()
    ;~ _GDIPlus_MatrixScale($hMatrix, $fScale, $fScale) ; Maske festlegen
    ;~ MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$fScale' & @lf & @lf & 'Return:' & @lf & $fScale & @lf & @lf & '@Error:' & @lf & @Error & @lf & @lf & '@Extended:' & @lf & @Extended) ;### Debug MSGBOX

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

    ;~ $hGraphics = _GDIPlus_ImageGetGraphicsContext($hImage)
    ;~ _GDIPlus_GraphicsSetTransform($hGraphics, $hMatrix) ; Änderungen anwenden

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

    ;~ _GDIPlus_ImageSaveToFile($hImage, GUICtrlRead($Input2) ) ; Bild Speichern

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

    ;~ _GDIPlus_MatrixDispose($hMatrix) ; Ressourcen freigeben
    ;~ _GDIPlus_ImageDispose($hImage)
    ;~ _GDIPlus_GraphicsDispose($hGraphics)
    ;~ _GDIPlus_Shutdown()
    Case $hBtn_Rename

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

    _GDIPlus_Startup()
    If Not FileExists(GUICtrlRead($Input1)) Then ContinueLoop
    $hImage = _GDIPlus_ImageLoadFromFile(GUICtrlRead($Input1))
    If @error Then ContinueLoop

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

    _GDIPlus_ImageSaveToFile($hImage, GUICtrlRead($Input2))
    _GDIPlus_Shutdown()
    EndSwitch
    WEnd

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

    Func _ImageResize()
    Local $hwnd, $hDC, $hBMP, $hImage1, $hImage2, $hGraphic, $CLSID, $i = 0, $X, $Y

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

    _GDIPlus_Startup()
    If Not FileExists(GUICtrlRead($Input1)) Then Return
    $hImage2 = _GDIPlus_ImageLoadFromFile(GUICtrlRead($Input1))
    If @error Then Return

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

    ; X +++UND+++ Y müssen kleiner-gleich mit den Eingaben sein. Das Verhältnis wird jedoch beibehalten
    ;
    ; Bsp:
    ; Eingaben: 800/600 Bild: 1000/500
    ; Scales: 0.75/1.2
    ; Damit das Verhältnis 2:1 bleibt, wird ein Faktor 2 mal benutzt
    ; 1.2 * 1000 ist aber nicht <= als die eingegebene Bildgröße, deswegen wird 0.75 benutzt.
    ; Ausgabebild: 800/400
    $X = _GDIPlus_ImageGetWidth($hImage1)
    $Y = _GDIPlus_ImageGetHeight($hImage1)
    $iW = GUICtrlRead($Inp_X)
    $iH = GUICtrlRead($Inp_Y)

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

    If $X > $Y Then
    $iH = $Y * ($X / $iW)
    Else
    $iW = $X * ($Y / $iH)
    EndIf

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

    $hwnd = _WinAPI_GetDesktopWindow()
    $hDC = _WinAPI_GetDC($hwnd)
    $hBMP = _WinAPI_CreateCompatibleBitmap($hDC, $iW, $iH)
    _WinAPI_ReleaseDC($hwnd, $hDC)

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

    $hImage1 = _GDIPlus_BitmapCreateFromHBITMAP($hBMP)
    ;~ $hImage2 = _GDIPlus_ImageLoadFromFile($sInImage)
    $hGraphic = _GDIPlus_ImageGetGraphicsContext($hImage1)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hImage2, 0, 0, $iW, $iH)
    $CLSID = _GDIPlus_EncodersGetCLSID("JPG")

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

    _GDIPlus_ImageSaveToFileEx($hImage1, GUICtrlRead($Input2), $CLSID)
    _GDIPlus_ImageDispose($hImage1)
    _GDIPlus_ImageDispose($hImage2)
    _GDIPlus_GraphicsDispose($hGraphic)
    _WinAPI_DeleteObject($hBMP)
    _GDIPlus_Shutdown()
    EndFunc ;==>_ImageResize

    [/autoit]
  • Deutsche Hilfe - Funktionen ohne Beispiel

    • FichteFoll
    • 14. Februar 2010 um 11:42

    Stimmt, hast recht. Get wirklich, auch ohne Benutzername.

    _FTP_FileGet()
    [autoit]

    #include <FTPEx.au3>

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

    $server = 'ftp.csx.cam.ac.uk'
    $username = ''
    $pass = ''

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

    $Open = _FTP_Open('Mein FTP-Control')
    $Conn = _FTP_Connect($Open, $server, $username, $pass)

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

    $aFile = _FTP_FileGet($conn, "README", @DesktopDir & "\Readme.txt")

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

    _FTP_Close($Open)

    [/autoit]
    _FTP_ProgressDownload()
    [autoit]


    #include <FTPEx.au3>
    #include <Misc.au3>

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

    $server = 'ftp.csx.cam.ac.uk'
    $username = ''
    $pass = ''

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

    $Open = _FTP_Open('Mein FTP-Control')
    $Conn = _FTP_Connect($Open, $server, $username, $pass)
    ProgressOn("Download", "Status:")

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

    $aFile = _FTP_ProgressDownload($Conn, @ScriptDir & "\tmp.tmp", "README", "_UpdateProgress")
    If @error Then MsgBox(64,"Fehler: ", @error)
    FileDelete(@TempDir & "\tmp.tmp")

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

    _FTP_Close($Open)
    ProgressOff()

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

    Func _UpdateProgress($Prozent)
    ProgressSet($Prozent, $Prozent & "%")
    If _IsPressed("77") Then Return 0 ; Abbruch bei F8
    Return 1 ; bei 1 Fortsetzten
    EndFunc ;==>_UpdateProgress

    [/autoit]
    Fail

    Bei _FTP_ProgressDownload hab ich ein Problem: Der Error-Wert ist immer -3 (=Quelldatei konnte nicht geöffnet werden), aber das passiert mit allen Dateien. WIeso funktioniert dann aber FileGet?
    Naja, ich hab zumindest die Vorlage gemacht, Debug ist noch enthalten. Wär schön, wenn das noch jemand ans Laufen bekommt^^


    Mist, Copy-Paste Fehler xD Dass mir das nicht aufgefallen ist... Naja, ich hab die Version von Bert nochmal ein wenig verfeinert und editiert. Funktioniert jetzt.

  • Fehler in der deutschen Hilfe bitte hier melden (Hilfedatei 3.3.6.1 2011.05.27)

    • FichteFoll
    • 13. Februar 2010 um 19:25

    Ja, das geht auch für User. (Damit kann man zwar Arbeit kaputt machen, aber sowas sollte wohl kaum jemand machen)

    Eigentlich bietet es sich viel eher an das dort zu machen, als hier das nur zu schreiben, aber naja ist eigentlich auch egal.

    Ich wollte nur Fragen, ob die HTML-Dateien (die ja für die Hilfe benutzt werden) jedes mal neu generiert werden, weil sonst ja etwas übersehen werden könnte.

    Übrigens hab ich noch einen komischen Fehler gefunden bei "Skripte ausführen":

    Zitat

    Form3: Compiled.exe [/ErrorStdOut] [/AutoIt3ExecuteScript Datei] [params ...]
    Ausführen einer anderen Skriptdatei von aus einer kompilierten AutoIt3 Skriptdatei. Dann ist es nicht notwendig eine andere Kopie der AutoIT3.exe in der kompilierten Datei zu installieren.

    Sorry, dass ich das jetzt nicht korrigiere, aber bin grad zu faul^^
    Und übrigens kommt die Aussage dieser Funktion nicht wirklich gut rüber. Musste ein paar drüber nachdenken, bis ich es verstanden habe. Vielleicht eher sowas wie "Ausführen einer nicht kompilierten AutoIt3 Skriptdatei mit der Benutzung einer Kompilierten."
    Die Tatsache hat mich übrigens überrascht^^ Das würde dann bedeuten, dass die gesammten Funktionen in jede .exe eingeschleust werden...

  • Deutsche Hilfe - Funktionen ohne Beispiel

    • FichteFoll
    • 13. Februar 2010 um 18:36

    Ich könnte ein paar Beispiele für die FTPEx UDF machen, aber ich weiß nicht genau, welchen Server ich nehmen soll.
    In _FTP_Open wird einfach nur

    [autoit]

    #include <FTPEx.au3>

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

    $Open = _FTP_Open('Mein FTP-Control')
    ; ...
    $Ftpc = _FTP_Close($Open)

    [/autoit]


    geschrieben.

    Bei Funktion _FTP_Connect jedoch:

    [autoit]

    #include <FTPEx.au3>

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

    $server = 'ftp.csx.cam.ac.uk'
    $username = ''
    $pass = ''

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

    $Open = _FTP_Open('Mein FTP-Control')
    $Conn = _FTP_Connect($Open, $server, $username, $pass)
    ; ...
    $Ftpc = _FTP_Close($Open)

    [/autoit]


    Also als Server 'ftp.csx.cam.ac.uk', was natürlich nicht geht.

    Soll ich dann diese Beispiele auch einfach nur so machen, dass man sieht, wo man sie einsetzt, aber sie nicht funktionieren? Oder kennt ihr nen FTP-Server, den ich dafür benutzen könnte?
    Alternativ könnte man bei einem Freehoster eine Domain erstellen, nur können dann alle Leute auf diesen Server zugreifen und eventuell Viren hochladen, die andere runterladen können...

  • FileInstall etwas anderes

    • FichteFoll
    • 31. Januar 2010 um 22:10

    AFAIK

  • FileInstall etwas anderes

    • FichteFoll
    • 31. Januar 2010 um 22:00

    Du könntest eventuell FileInstall() benutzen, die Datei in den Temp Ordner schreiben (@TempDir) und danach wieder löschen, wenn du sie nicht mehr brauchst.

  • Random zugehörigkeit

    • FichteFoll
    • 13. August 2009 um 13:02

    Ist jetzt zwar nicht die Antwort auf deine Frage, aber Radiobuttonabfragen habe ich mit Select gelöst, also

    [autoit]

    Select
    Case GUICtrlRead($GUIRadioNoob) = 1
    ;bla bla
    Case GUICtrlRead($GUIRadioPro) = 1
    ;bla bla
    EndSelect

    [/autoit]

    Nebenbei würde ich vielleicht einen Standartbutton angeben, welcher dann schon selected ist.
    GUICtrlSetState($GUIRadioNoob, $GUI_CHECKED)

    Mit 2D Arrays kann ich leider nicht helfen

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™