_GDIPlus_ImageCalcDif

  • Hallo Velted ,

    Die letzten Zeilen in Post #19 (Ach ja, mit den Befehlszeilen...) habe ich nur deshalb hinzugefügt, weil Mars in Post #12 meinte: "Ich vermute, dass du die 64Bit Version verwendest und der ASM Code ist für 32Bit zusammengesetzt worden". Ich möchte nur zeigen, dass ich dann keine falschen, sondern gar keine Werte erhalte.
    Unter Autoit 3.3.18.0 habe ich die neue UDF genutzt, also die, wo es in Zeile 47 'int' statt 'none' heißt.
    Unter Autoit 3.3.16.1 habe ich die alte UDF genutzt. Jetzt auch noch mal die neue. Ergebnis: Wie in Post #7.
    Welche Werte bekommst du denn angezeigt? Mit der modifizierten 'Test.au3' aus Post #19 ist das schnell getestet.

    Gruß

    Reinhard

  • Ich habs jetzt auch nochmal bei mir angeschaut (mit deiner modifizierten Test.au3) -> Ergebnisse sind meines Erachtens nach richtig.

    Ansonsten kann ich nur empfehlen ein bisschen selbst zu debuggen. Da der Code vorher funktioniert hat kann es maximal ein "Minifehler" irgendwo sein. Also zumindest eingrenzen was schiefgeht. Weil wenn ich es nicht reproduzieren kann muss ich im Dunkeln stochern...

    Bitte probiere es mal komplett ohne ASM aus mit dem nativen AutoIt-Code aus Post #12. Reinhard
    Falls das Ergebnis dann deinen Erwartungen entspricht liegt es am ASM Teil, falls nicht, dann nicht.

  • Hier ist noch ein Anhang mit der EasyASM.au3 zusammen, damit man im ASM herumfummeln kann, falls erforderlich.
    (Den 2x Startup & Shutdown bitte ignorieren, das hatte ich mal automatisch in die EasyASM.au3 eingebaut. Genauso wie anderer Kram wie z.B. _ASM_Call(...) wo ich das Interface geändert habe sodass nur noch ein einziger pointer verwendet wird und cdecl verwendet wird statt stdcall. Also bitte bei DllCallAdress bleiben)

  • Wenn ich die Funktion aus Post #12 in die UDF einbaue, erhalte ich korrekte Ergebnisse.
    Was ich gerade noch herausgefunden habe: Mit Autoit 3.3.14.5, das ich vermutlich unter Windows 7 genutzt habe, erhalte ich auch auf meinem Rechner korrekte Ergebnisse (mit der ursprünglichen Original-UDF).

  • Passt gut hier rein - Differenz als Graustufe, wobei weiß = keine Differenz, je dunkler, desto größer die Differenz:


    Sorry fürs Hijacken...:whistling:

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

    3 Mal editiert, zuletzt von UEZ (5. November 2025 um 19:49)

  • Hallo,
    mir ist ein bisschen unbehaglich dabei, hier vom ursprünglichen Thema abzuschweifen. Vielleicht hast du Nerv, das schöne Skript in einem eigenen Thema vorzustellen.
    Aber jedenfalls: Der Befehl 'Auto Farbe' im Faststone-Image-Viewer erzeugt aus einem Graustufenbild keine Farben. Es wird nach meinem Eindruck lediglich eine Tonwertspreizung ausgeführt, die dazu führt, dass die (u. U. wenigen) vorhandenen Farben über die gesamte Breite des Histogramms verteilt werden. Bei Farbbildern werden die Farbkanäle einzeln behandelt. Vielleicht werden auch noch weitere clevere Algorithmen bemüht. Unabhängig davon kann auch die Anwendung des Befehls 'Auto-Farbe' auf ein Graustufenbild verblüffen. Ich habe in die hier angehängte Datei 'ImageDiff.zip' vier Bilder gepackt:
    - Fahrrad.png (das Original)
    - Fahrrad.jpg (eine verlustarme Kompression des Originals)
    - ImageDiff.png (vom Skript im Modus '3' erzeugt)
    - ImageDiff_AutoFarbe.png
    Man sieht also schön, wie der Befehl 'Auto Farbe' die in 'ImageDiff.png' kaum wahrnehmbaren Differenzen sichtbar macht.

  • Ich habe den Code oben aktualisiert. Mode 4 sollte auch so ähnliche Resultate liefern.

    Um diesen Thread nicht weiter zu missbrauchen, kann jemand einen neue Thread eröffnen, um den Code weiter zu behandeln, falls erwünscht, ansonsten mache ich jetzt einen Punkt zu meinem Code.

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • mir ist ein bisschen unbehaglich dabei, hier vom ursprünglichen Thema abzuschweifen.

    Ach das passt schon :D
    Im Endeffekt geht es ja um eine sehr ähnliche (bzw. fast die selbe) Sache, von daher ist das hier thematisch eigentlich ganz gut aufgehoben. Wäre nur praktisch das was am Ende herauskommt ggf. nochmal kurz in einem eigenen Post zu erklären. Den verlinke ich (oder auch UEZ, wir sind ja PUs, da kann man überall editieren) dann im Startpost entsprechend damit er sichtbarer wird, falls andere Leute das auch gebrauchen können.

    lg
    M