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. UEZ

Beiträge von UEZ

  • WebP v0.5.0 build 2025-08-23 beta

    • UEZ
    • 21. April 2022 um 11:56
    Zitat von Andy

    UEZ

    Klasse Arbeit!! :thumbup:

    Hast du die *.h-Files nach Freebasic transferiert und dann mit den *.lib Dateien gelinkt?

    Hi Andy,

    nur einige Teile von der decode.h. Die *.lib funzen nicht, musste die libwebp_x??.a nehmen. Primär wollte ich einfach die WebP Bilder in Autoit benutzen können und habe mich deshalb nur auf das Wesentliche beschränkt.

    Ob sich der Aufwand lohnt alle Funktion in die DLL zu packen, weiß ich noch nicht.

    Danke für dein Feedback.

    Off-Topic: dieses Jahr waren die Beiträge in der revision echt mau... :(

  • WebP v0.5.0 build 2025-08-23 beta

    • UEZ
    • 20. April 2022 um 22:45

    Ich habe das Ganze mal in eine UDF mit Beispielen gepackt -> siehe Beitrag #1

  • WebP v0.5.0 build 2025-08-23 beta

    • UEZ
    • 20. April 2022 um 14:20

    Momentan werden nur Bilder decodiert, keine animierten Bilder und kein Encoding in das WebP Format.

    Danke für euer Feeback!

    funkey: danke für den Link.

  • WebP v0.5.0 build 2025-08-23 beta

    • UEZ
    • 20. April 2022 um 11:36

    Das Thema

    Thema

    Bilder im webp Format in GUI anzeigen

    Moin,

    gibt es eine Möglichkeit das webp Bildformat in einer AutoIt-GUI anzeigen zu lassen?

    Beispielbilder findet man unter https://developers.google.com/speed/webp/gallery1, z.B.

    https://www.gstatic.com/webp/gallery/1.webp

    Ich vermute es würde mit einem eingebetteten IE gehen, aber eventuell gibt es ja auch eine einfachere Methode.

    Dabei gibt es ja wie bei GIF auch die Möglichkeit animierte webp-Bilder zu erstellen, Beispiel: https://mathiasbynens.be/demo/animated-webp

    Ich habe schon ein wenig…
    BLinz
    15. April 2022 um 11:57

    hat mich neugierig gemacht, und deshalb habe ich eine kleine DLL gebastelt, die WebP Bilder in GDI+ / GDI umwandelt, sodass man sie direkt in Autoit benutzen kann.

    Das Archiv beinhaltet u.a. die DLLs (x86 / x64), die zum Umwandeln benötigt werden.


    WebP Advanced Encoder GUI.au3:

    WAE-GUI.png


    Bitte mal testen, ob's bei euch auch funzt.

    Btw, die DLL ist in Freebasic geschrieben. :)

    Mehr zum Thema WebP API kann hier eingesehen werden: https://developers.google.com/speed/webp/docs/api.


    Download der neusten Version auf meinem 1Drv: WebP

  • [Wettbewerb] String komprimieren

    • UEZ
    • 1. April 2022 um 12:52

    Glückwunsch an Mars für die beste Komprimierung:thumbup:

    AspirinJunkie für die auch sehr gute und sehr schnelle Komprimierung :thumbup:

    Hier mal das Resultat mit externen Tools / DLLs:

    Size File Ratio %
    6105 original.txt 0.00%
    3552 original.png 41.82%
    2875 original_WinAPI_XPRESS_HUFF.bin 52.91%
    2803 original_lzma2.7z 54.09%
    2776 original.rar 54.53%
    2626 original_bzip2.7z 56.99%
    2492 original_ppmd.7z 59.18%
  • [Wettbewerb] String komprimieren

    • UEZ
    • 4. März 2022 um 09:16

    Da ich nicht das Rad neu erfinden wollte, denn seit es Computer gibt, wird an der Komprimierung geforscht, habe ich mich zu dieser Lösung entschieden, die aber laut den Regeln nicht erlaubt ist. Deshalb poste ich hier den Code direkt:

    Spoiler anzeigen
    AutoIt
    ;Coded by UEZ build 2022-03-05 proof-of-concept version
    #include <GDIPlus.au3>
    #include <Memory.au3>
    
    Func _GDIPlus_StreamImage2BinaryString($hBitmap, $sFormat = "PNG", $iQuality = 80, $bSave = False, $sFilename = @ScriptDir & "\Converted.jpg") ;coded by UEZ 2013 build 2014-01-25 (based on the code by Andreik)
        Local $sImgCLSID, $tGUID, $tParams, $tData
        Switch $sFormat
            Case "JPG"
                $sImgCLSID = _GDIPlus_EncodersGetCLSID($sFormat)
                $tGUID = _WinAPI_GUIDFromString($sImgCLSID)
                $tData = DllStructCreate("int Quality")
                DllStructSetData($tData, "Quality", $iQuality) ;quality 0-100
                Local $pData = DllStructGetPtr($tData)
                $tParams = _GDIPlus_ParamInit(1)
                _GDIPlus_ParamAdd($tParams, $GDIP_EPGQUALITY, 1, $GDIP_EPTLONG, $pData)
            Case "PNG", "BMP", "GIF", "TIF"
                $sImgCLSID = _GDIPlus_EncodersGetCLSID($sFormat)
                $tGUID = _WinAPI_GUIDFromString($sImgCLSID)
            Case Else
                Return SetError(1, 0, 0)
        EndSwitch
        Local $hStream = _WinAPI_CreateStreamOnHGlobal() ;http://msdn.microsoft.com/en-us/library/ms864401.aspx
        If @error Then Return SetError(2, 0, 0)
        _GDIPlus_ImageSaveToStream($hBitmap, $hStream, DllStructGetPtr($tGUID), DllStructGetPtr($tParams))
        If @error Then Return SetError(3, 0, 0)
    
        Local $hMemory = _WinAPI_GetHGlobalFromStream($hStream) ;http://msdn.microsoft.com/en-us/library/aa911736.aspx
        If @error Then Return SetError(4, 0, 0)
        Local $iMemSize = _MemGlobalSize($hMemory)
        If Not $iMemSize Then Return SetError(5, 0, 0)
        Local $pMem = _MemGlobalLock($hMemory)
        $tData = DllStructCreate("byte[" & $iMemSize & "]", $pMem)
        Local $bData = DllStructGetData($tData, 1)
        _WinAPI_ReleaseStream($hStream) ;http://msdn.microsoft.com/en-us/library/windows/desktop/ms221473(v=vs.85).aspx
        _MemGlobalFree($hMemory)
        If $bSave Then
            Local $hFile = FileOpen($sFilename, 18)
            If @error Then Return SetError(6, 0, $bData)
            FileWrite($hFile, $bData)
            FileClose($hFile)
        EndIf
        Return $bData
    EndFunc   ;==>_GDIPlus_StreamImage2BinaryString
    
    Func _StringCompress($sString)
        If StringLen($sString) < 24 Then Return SetError(1, 0, 0)
        _GDIPlus_Startup()
        Local $iLen = StringLen($sString), $iMemSize = Mod($iLen, 8) ? ($iLen + 8 - Mod($iLen, 8)) * 4 : $iLen * 4, $i
        Local $tPixelData = DllStructCreate("ubyte scan0[" & $iMemSize & "];"), $iW = Mod($iLen, 4)  ? Int($iLen / 4) + 1 : $iLen / 4
        If $iW > 65535 Then Return SetError(2, 0, 0)
        Local $hImage = _GDIPlus_BitmapCreateFromScan0($iW, 1, $GDIP_PXF32ARGB, $iMemSize, $tPixelData)
        If Not $hImage Then
            _GDIPlus_Shutdown()
            Return SetError(3, 0, 0)
        EndIf
        For $i = 1 To $iLen
            $tPixelData.Scan0(($i)) = Asc(StringMid($sString, $i, 1))
        Next
        Local $binData = _GDIPlus_StreamImage2BinaryString($hImage)
        _GDIPlus_ImageDispose($hImage)
        _GDIPlus_Shutdown()
        Return $binData
    EndFunc
    
    Func _StringDecompress($vCompress)
        If BinaryLen($vCompress) < 5 Then Return SetError(1, 0, 0)
        _GDIPlus_Startup()
        Local $sString, $hImage = _GDIPlus_BitmapCreateFromMemory($vCompress)
        If Not $hImage Then
            _GDIPlus_Shutdown()
            Return SetError(2, 0, 0)
        EndIf
    
        Local $binBMP = _GDIPlus_StreamImage2BinaryString($hImage, "BMP"), $iLen = BinaryLen($binBMP), $iSize =  _GDIPlus_ImageGetWidth($hImage) * 4 - 3
        $sString = BinaryToString(BinaryMid($binBMP, 55, $iSize))
        _GDIPlus_ImageDispose($hImage)
        _GDIPlus_Shutdown()
        $binBMP = 0
        Return $sString
    EndFunc
    
    Global $sUsername = "UEZ"
    
    #Region Achtung! Diese Region darf nicht veraendert werden!
    Global $hFile = FileOpen(@ScriptDir & '\original.txt', 128)
    If $hFile = -1 Then Exit
    Global $sOriginal = FileRead($hFile)
    FileClose($hFile)
    Global $iOriginalLen = StringLen($sOriginal)
    
    Global $iTimer = TimerInit()
    Global $vCompressed = _StringCompress($sOriginal)
    Global $iTimeDiffComp = TimerDiff($iTimer)
    ;Global $iCompressedLen = StringLen($vCompressed)
    Global $iCompressedLen = BinaryLen($vCompressed)
    
    Global $iTimer = TimerInit()
    Global $sDecompressed = _StringDecompress($vCompressed)
    Global $iTimeDiffDecomp = TimerDiff($iTimer)
    Global $iDecompressedLen = StringLen($sDecompressed)
    
    ConsoleWrite('============================================================' & @CRLF)
    ConsoleWrite(StringFormat('Result for "%s"\r\n', $sUsername))
    ConsoleWrite('============================================================' & @CRLF)
    ConsoleWrite(StringFormat('Decompressed = Original: %s\r\n', $sOriginal == $sDecompressed))
    ConsoleWrite(StringFormat('Length Original: %i\r\n', $iOriginalLen))
    ConsoleWrite(StringFormat('Length compressed: %i\r\n', $iCompressedLen))
    ConsoleWrite(StringFormat('Length decompressed: %i\r\n', $iDecompressedLen))
    ConsoleWrite(StringFormat('Compress-Ratio: %s %%\r\n', Round(100 - (100 / $iOriginalLen * $iCompressedLen), 3)))
    ConsoleWrite(StringFormat('Time compressed: %i ms\r\n', $iTimeDiffComp))
    ConsoleWrite(StringFormat('Time decompressed: %i ms\r\n', $iTimeDiffDecomp))
    ConsoleWrite('============================================================' & @CRLF)
    #EndRegion Achtung! Diese Region darf nicht veraendert werden!
    Alles anzeigen

    Das Resultat auf meinem Notebook:

    Code
    ============================================================
    Result for "UEZ"
    ============================================================
    Decompressed = Original: True
    Length Original: 6033
    Length compressed: 3473
    Length decompressed: 6033
    Compress-Ratio: 42.433 %
    Time compressed: 42 ms
    Time decompressed: 13 ms
    ============================================================
    Alles anzeigen

    In meinem Freebasic Programm "FB File2Bas Code Generator", das Pendant zu "File to Base64 String Code Generator", benutze ich u.a. ein Build-in LZMAT Kompressionsalgorithmus, aber wie Andy bereits geschrieben hat, wollte ich den Code nicht zu Autoit portieren, wäre aber Interessant gewesen, da die Portierung, denke ich zumindest, nicht ganz einfach ist.

  • [Wettbewerb] String komprimieren

    • UEZ
    • 22. Februar 2022 um 21:24
    Zitat von Oscar

    keine externen Library

    Hi Oscar,

    nette Idee.

    Eine Frage, was sind externe Libraries - sprich zählen dazu auch Windows Libs, wie z.B. GDI+, User32, etc.?

  • Code Kata - Happy Numbers

    • UEZ
    • 6. Februar 2022 um 21:47

    Coole Analyse Andy ! Die Tatsache der Spiegelung ist definitiv ein Booster bezgl. Performance (keine Impfung :P ). Mir kam intuitiv die Rekursion als Lösung in den Kopf, aber das Ganze grafisch darzustellen, war mit nicht eingefallen.

  • Code Kata - Happy Numbers

    • UEZ
    • 5. Februar 2022 um 00:10

    Und RegEx ist langsamer als die StringSplit Funktion.

    Benchmark nach der Reihenfolge der Beiträge:

    AutoIt
    #Region UEZ
    Func HN($n, $iDepth = 0)
        If $n = 0 Or $n = 2 Or $n = 4 Or $n = 20 Or $n = 42 Or $n = 145 Or $iDepth > 12 Then Return 0
        If $n = 1 Then Return 1
        Local $i, $a = StringRegExp($n, "\d", 3), $sum = 0
        For $i = 0 To UBound($a) - 1
            $sum += $a[$i] * $a[$i]
        Next
        If $sum = 1 Then Return 1
        Return HN($sum, $iDepth + 1)
    EndFunc
    #EndRegion
    
    #Region chesstiger
    Func happy($iNum)
        ;$iNum is an integer from 1 to 100
        If $iNum = 1 Then Return 1
        If $iNum = 20 Then Return 0
        Local $aNum = StringSplit(String($iNum), "", 3)
        Local $i, $iSum = 0
        For $i = 0 To UBound($aNum) - 1
            $iSum += Int($aNum[$i])^2
        Next
        Return happy($iSum)
    EndFunc
    #EndRegion
    
    #Region SOLVE-SMART
    Func _isHappyNumbers($iNumber)
        Local $iIterationsToCheck = 15
    
        For $i = 1 To $iIterationsToCheck Step 1
            Local $iResult = _getSumOfDigitsSquares($iNumber)
    
            If $iResult == 1 Then
                Return True
            EndIf
    
            $iNumber = $iResult
        Next
    
        Return False
    EndFunc
    
    Func _getSumOfDigitsSquares($iNumber)
        Local $iDigitsCount = StringLen($iNumber)
        Local $iSum
    
        For $j = 1 To $iDigitsCount Step 1
            $iSum += _getSquare($iNumber, $j)
        Next
    
        Return $iSum
    EndFunc
    
    Func _getSquare($iNumber, $iStart)
        Return StringMid($iNumber, $iStart, 1) ^ 2
    EndFunc
    #EndRegion
    
    #Region Yjuq
    Func isHappy($n)
        Local $r, $s, $x = $n
    
        While ($x <> 1) And ($x <> 4)
            $s = 0
            $n = $x
    
            While $n > 0
                $r = Mod($n, 10)
                $s += $r ^ 2
                $n = Floor($n / 10)
            WEnd
    
            $x = $s
        WEnd
    
        Return $x = 1
    EndFunc
    #EndRegion
    
    Global $t = TimerInit(), $e, $durchlauf = 75000
    ConsoleWrite("Starte jeweils " & $durchlauf & " Durchläufe..." & @CRLF)
    
    For $i = 1 To $durchlauf
        HN($i)
    Next
    $e = TimerDiff($t)
    ConsoleWrite("UEZ Laufzeit: " & $e & " ms" & @CRLF)
    
     $t = TimerInit()
    For $i = 1 To $durchlauf
        happy($i)
    Next
    $e = TimerDiff($t)
    ConsoleWrite("chesstiger Laufzeit: " & $e & " ms" & @CRLF)
    
     $t = TimerInit()
    For $i = 1 To $durchlauf
        _isHappyNumbers($i)
    Next
    $e = TimerDiff($t)
    ConsoleWrite("SOLVE-SMART Laufzeit: " & $e & " ms" & @CRLF)
    
     $t = TimerInit()
    For $i = 1 To $durchlauf
        isHappy($i)
    Next
    $e = TimerDiff($t)
    ConsoleWrite("Yjuq Laufzeit: " & $e & " ms" & @CRLF)
    Alles anzeigen

    Rekursionen sind i.d.R. einfacher zu implementieren -> kürzerer Code, aber langsamer.

  • Code Kata - Happy Numbers

    • UEZ
    • 3. Februar 2022 um 23:05

    Mal was anderes...

    Hier mein Lösungsvorschlag:

    Spoiler anzeigen
    AutoIt
    ;coded by UEZ
    Func HN($n, $iDepth = 0)
        If $n = 0 Or $n = 2 Or $n = 4 Or $n = 20 Or $n = 42 Or $n = 145 Or $iDepth > 16 Then Return 0
        If $n = 1 Then Return 1
        Local $i, $a = StringRegExp($n, "\d", 3), $sum = 0
        For $i = 0 To UBound($a) - 1
            $sum += $a[$i] * $a[$i]
        Next
        If $sum = 1 Then Return 1
        Return HN($sum, $iDepth + 1)
    EndFunc
    
    For $i = 0 To 100
        ConsoleWrite("Zahl " & $i & " ist Happy: " & HN($i) & @CRLF)
    Next
    Alles anzeigen
  • Kicktipp Bundesliga 2021/2022 Wett-Tippen!

    • UEZ
    • 14. Dezember 2021 um 22:56

    Hatte ich auch nicht auf dem Radar - hatte wohl Glück, dass ich am Montag getippt hatte.

    Imho, momentan sind die Ergebnisse z.T. sehr überraschend.

  • Array ByRef in SubSkript registrieren?

    • UEZ
    • 18. August 2021 um 00:14
    Zitat von BugFix

    Das Hauptskript soll nur Daten von verschiedenen Quellen einsammeln und diese werden dann in einem anderen Skript verarbeitet.

    In Freebasic kann man den Pointer von einem Array übergeben und somit direkt in den Speicher schreiben. In Autoit, soweit ich weiß, geht das leider nicht. Falls die Daten immer den gleichen Typ haben, könnte man auch eine Struct anstelle eines Arrays benutzen und den Pointer zur Struct übergeben.

  • Array ByRef in SubSkript registrieren?

    • UEZ
    • 17. August 2021 um 22:24

    Ich vermute, dass bei dieser Aktion (AdlibRegister) der Speicher intern kopiert wird und somit die Änderungen des Arrays nicht aktualisiert werden.

    Dies funzt:

    AutoIt
    While True
        Sleep(50)
        _FillArray($aData)
        _Register_Array($aData, 50)
        _Run()
    WEnd
  • Array ByRef in SubSkript registrieren?

    • UEZ
    • 17. August 2021 um 14:30

    Kannst du vielleicht ein kleines Beispiel basteln? Denn ich bin mir nicht ganz sicher, was das Problem ist.

  • Kicktipp Bundesliga 2021/2022 Wett-Tippen!

    • UEZ
    • 7. August 2021 um 12:44
    Zitat von Xorianator

    Ich hab mich mal dazu bequemt, aber meine Tipps für den 1. Spieltag sind relativ nicht ernst zu nehmen.

    UEZ wenn jetzt nicht noch das nächste Virus wieder reinkommt, dann bin ich weiterhin dabei 😄. Bis wann muss immer getippt werden, für den jeweiligen Folgespieltag? Würde mir einfach nen Termin im Kalender machen, wo ich meine Tipps abgeben muss.

    :thumbup:

    Du kannst theoretisch auch die kompletten Spiele eintragen, aber macht sicherlich nicht viel Sinn. :)

  • Kicktipp Bundesliga 2021/2022 Wett-Tippen!

    • UEZ
    • 6. August 2021 um 22:31

    Die Frage ist, wer hält bis zum Schluss durch? ;)

  • Kicktipp Bundesliga 2021/2022 Wett-Tippen!

    • UEZ
    • 6. August 2021 um 12:31

    Letzter Aufruf! Heute Abend geht's los! Wer will kann sich noch schnell kostenlos registrieren und mit tippen!

    Zitat von Musashi

    Nur aus Interesse :

    Haben in den vergangenen BL-Spielzeiten mehr User mitgemacht, oder hat die Begeisterung über die Jahre nachgelassen ?

    War immer schon relativ bescheiden... 😞

  • Kicktipp Bundesliga 2021/2022 Wett-Tippen!

    • UEZ
    • 14. Juli 2021 um 19:26

    Gude,

    hiermit läute ich die nächste Runde ein.

    Wer Lust und Laune hat mit zu tippen, einfach https://www.kicktipp.de/autoit-bl kostenlos registrieren und lostippen. Die Teilnehmer vom letzten Kicktipp, die bis zum Ende durchgehalten haben, sind wieder automatisch dabei.

    Am 06.08.21 geht mit dem DFB Pokal Spielen los. Bonus Fragen nicht vergessen. ;)

    Was bekommt der Tipp Sieger? Ruhm und Ehre. :)

    Viel Spaß und viel Glück!


    Resultat:

    Gesamtübersicht.png

  • UEFA EURO 2020 Tipp Wettbewerb

    • UEZ
    • 12. Juli 2021 um 20:26
    Zitat von Musashi

    Gibt es schon einen Link dazu ?

    Der Link ist immer der gleiche; https://www.kicktipp.de/autoit-bl  :)

  • UEFA EURO 2020 Tipp Wettbewerb

    • UEZ
    • 12. Juli 2021 um 12:11

    Herzlichen Glückwunsch an BananaJoe:thumbup:


    Zitat von Musashi

    Zur WM 2022 wird es so etwas wahrscheinlich wieder geben.

    Da sollte die Werbetrommel ggf. etwas früher gerührt werden (und warum nicht auch im EN-Forum ?). Je mehr Teilnehmer (m/w/d) desto besser :) .

    Bis fast kurz vor Schluss war ich alleine und ich wollte eigentlich die EM Tipprunde aus Mangel an Teilnehmer löschen, wobei zwei Wochen Vorlaufszeit doch eigentlich reichen sollten.

    Das Interesse ist leider i.d.R. immer sehr bescheiden und ich hatte auch im EN Forum vor Jahren die Leute eingeladen, aber mit getippt haben nur ein paar...

    Die Bundesliga für 21/22 ist neu gestartet und die Teilnehmer vom letzten mal sind wieder dabei.

    Ich werde sicherlich zur WM22 wieder ein Tipp Spiel starten. :)

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™