schneller Zugriff auf Bild



  • Guten Tag!

    Was ist die schnellste Möglichkeit auf ein Pixel eines Bildes zuzugreifen?

    TImage::Pixels[][] ist zu langsam

    TBitmap::Scanline[] ist zwar deutlich schneller, aber auch noch zu langsam

    gibt es eine schnellere Funktion?

    Vielen Dank & Liebe Grüße



  • Man kann doch bestimmt die Pixel schnell rendern lassen.



  • Und wie geht das?

    LG



  • ich weiss, das das bei Purebasic auch ging.
    Schau doch mal in die msdn.
    Da findest du bestimmt was.



  • TImage und TBitmap hört sich stark nach Delphi oder so an?

    WinAPI-Möglichkeit:
    Bild mittels LoadImage() laden und dabei LR_CREATEDIBSECTION angeben.
    Dann kommt man mit GetDIBits() direkt an das Pixel-Array.



  • Ja es ist Borland C++ ... die genannten Funktionen sind mir aber zu langsam und laut den Leuten aus dem C++ Forum gibts keine schnellere Möglichkeit als ScanLine.

    Darum frage ich hier mal.

    geeky schrieb:

    TImage und TBitmap hört sich stark nach Delphi oder so an?

    WinAPI-Möglichkeit:
    Bild mittels LoadImage() laden und dabei LR_CREATEDIBSECTION angeben.
    Dann kommt man mit GetDIBits() direkt an das Pixel-Array.

    Wie schnell ist diese Möglichkeit?

    LG



  • Zugriff aufs Pixel-Array ist sau schnell. Allerdings kostet der Aufruf von LoadImage und GetDIBits was 😉
    Probieren geht über studieren 😉



  • Nimm die FreeImage oder die DevIL, da bekommst du "rohe" Zeiger auf das Bild - alles weitere liegt dann bei dir.





  • Eine schnelle Möglichkeit wäre, per Offset an das Bitmap-Array des Bildes zu gehen und davon einen Pointer zu ziehen mit dem du manuell durch Pointerinkrementierung durch das Bitmap-Array fährst und die Daten ausliest.



  • Hroudtwolf schrieb:

    Eine schnelle Möglichkeit wäre, per Offset an das Bitmap-Array des Bildes zu gehen und davon einen Pointer zu ziehen mit dem du manuell durch Pointerinkrementierung durch das Bitmap-Array fährst und die Daten ausliest.

    Kannst du das mal für einen nicht so erfahrenen Programmieren erläutern? Ich habe kein Wort verstanden!

    LG & Thanks!



  • hm ... ich probiere nun schon einige Tage, per LoadImage()/GetDIBits() an das Pixel Array zu kommen ohne Erfolg!

    Kann mir bitte einer mal ein Einfaches Beispiel schreiben?
    Etwas is der Form:

    LoadImage(...)
    ...

    Image[300][400] = Blau
    ...

    Das wäre sehr hilfreich!

    Liebe Grüße


Log in to reply