Alternative zu draw_getpixel?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Alternative zu draw_getpixel?

    Hey Leute!
    Ich habe folgendes Problem:
    Ich möchte jeden einzelnen Pixel eines Bildes (320*320) auslesen und beispielsweise in eine txt schreiben.
    Ich hab das so versucht (das Bild liegt im Room an der Pos 0,0):

    GML-Quellcode

    1. file=file_text_open_write("datei.txt");
    2. for(yy=0;yy<320;yy+=1)
    3. {
    4. //um nacheinander die zeilen durchzugehen
    5. for(xx=16;xx<room_width-16;xx+=1)
    6. {
    7. //um nacheinander die spalten durchzugehen
    8. col=draw_getpixel(xx,yy);
    9. file_text_write_string(file,string(col)+" | ");
    10. //das " | " ist nur als trennzeichen
    11. }
    12. }
    13. file_text_close(file);
    Alles anzeigen


    Da die Funktion draw_getpixel aber ziemlich langsam ist, brauche ich eine bessere Lösung/Alternative.
    Wie soll ich das jetzt machen?
    Kann mir da jemand helfen?

    -Tobi
  • Nun, du könntest das Bild auf einem Surface speichern, dieses Surface dann aber nicht drawen, sondern in jedem Step einen (oder mehrere) Pixel abfragen.
    So hast du dann die Möglichkeit das Spiel während dessen quasi weiterlaufen zu lassen.
    Ansonsten würde mir da auch keine gescheite Lösung einfallen.

    P.S.: Wozu willst du die Farbwerte überhaupt in eine Textdatei schreiben? oO
    Hier werden sie geholfen:
    [Regeln] [GML] [Hilfe] [Suche] [Posten] [Duden.de]
    [Wenn das alles nicht mehr hilft] [Dunning-Kruger]


    "Die Vernunft sollte Autorität definieren; nicht umgekehrt!"
    "Selber denken regt das Gehirn an."
    - Niffel f.k.a. Kilik
  • du kannst auch einen screenshot machen. das entspreicht einer textdatei in der alle pixel als farbwerte gespeichert sind.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Nun, du könntest das Bild auf einem Surface speichern, dieses Surface dann aber nicht drawen, sondern in jedem Step einen (oder mehrere) Pixel abfragen.
    So hast du dann die Möglichkeit das Spiel während dessen quasi weiterlaufen zu lassen.
    Ansonsten würde mir da auch keine gescheite Lösung einfallen.
    Das hört sich ja schon mal ganz gut an...
    Ich versuch das mal selber zu machen (hab eigendlich nie mit surfaces gearbeitet).
    P.S.: Wozu willst du die Farbwerte überhaupt in eine Textdatei schreiben? oO
    ----------------------------------------------------------------------------------------------------------
    du kannst auch einen screenshot machen. das entspreicht einer textdatei in der alle pixel als farbwerte gespeichert sind.
    Ich muss die Farbwerte aber nacher (mit einem anderen Programm) noch verarbeiten.
    Und da wäre ein screenshot nicht so gut, weil ich nicht weiß, wie ich eine bmp zerlegen muss um an jeden einzelnen Pixel ranzukommen.

    €dit:
    @kilik:
    ich habe mir die surface-Befehle mal angeguckt und habe festgestellt, dass es keine Funktion gibt, um ein Bild in ein surface zu laden (?), oder hab ich da was falsch verstanden? (sorry kenn mich gar nicht mit surfaces aus :( )
    Hab ein Tutorial dazu gefunden (oben) aber mein Problem ist immer noch nicht gelöst, da der Befehl surface_getpixel ebenfalls sehr langsam ist.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Tobi ()

  • Ich würde dir trotzdem raten, einen Screenshot zu machen. Für viele Programmiersprachen gibt es Bibliotheken, die mit Bildern sehr leicht umgehen können, und ansonsten gibt es Beschreibungen vom .bmp Format.

    de.wikipedia.org/wiki/Windows_Bitmap
    Ja mal gucken... aber aus dem wiki Beitrag werd ich nicht schlau...

    Mal gucken ob ich da weiterkomm...
    (würd mich auch weiterhin über eure hilfe freuen)

    -Tobi


    €dit: okay ich mach das mit screenshots.
    Aber kann mir jemand das bmp system erklären?
    Also wo welcher pixel steht sozusagen.
    (ich hab das mal mit dem Textedito geöffnet... nur ganz oft ÿÿÿ ??)
    Wie soll man damit was anfangen?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Tobi ()