AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Optimierung von Pixel

Ein Thema von EWeiss · begonnen am 7. Apr 2016 · letzter Beitrag vom 12. Apr 2016
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

Optimierung von Pixel

  Alt 7. Apr 2016, 18:16
Jemand ne Idee wie ich das beschleunigen kann?

Image1.Picture.Bitmap.Canvas.Pixels[ColumnCounter, BUFFER_SIZE - i] := HSLtoRGB(H, S, L);

Bei einer Bitmap weite von 17507 kann das ganz schön lange dauern bis ich da durch bin.

gruss

Geändert von EWeiss (11. Jul 2019 um 15:44 Uhr)
  Mit Zitat antworten Zitat
CHackbart

Registriert seit: 22. Okt 2012
265 Beiträge
 
#2

AW: Optimierung von Pixel

  Alt 7. Apr 2016, 18:28
Probier mal Scanline, oder noch besser: Erstelle einen eigenen Pixelbuffer: Breite x Höhe * 4 und zeichne das erst dort rein und kopiere es dann in das Image.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Optimierung von Pixel

  Alt 7. Apr 2016, 18:45
Probier mal Scanline, oder noch besser: Erstelle einen eigenen Pixelbuffer: Breite x Höhe * 4 und zeichne das erst dort rein und kopiere es dann in das Image.
Kleine Anregung wie meinst das mit Pixelbuffer?
In wie weit ist das schneller.
Bei einer Mp3 18sec benötige ich gut 5sec um den Stream einzulesen.

Mit Pixel wohlbemerkt.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: Optimierung von Pixel

  Alt 7. Apr 2016, 18:49
Canvas.Pixel macht bei JEDEM Aufruf einen API Call. Reine Schätzung, aber Canvas.ScanLine ist locker um den Faktor 1000 schneller (eher mehr). Dort schreibst du die Daten praktisch direkt in den internen Bitmapspeicher.

Einen Pixelbuffer brauchst du meiner Meinung nach nicht. Nichts anderes liefert Canvas.ScanLine doch: Einen Zeiger auf den Pixelbuffer des Bitmaps.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Optimierung von Pixel

  Alt 7. Apr 2016, 18:50
Canvas.Pixel macht bei JEDEM Aufruf einen API Call. Reine Schätzung, aber Canvas.ScanLine ist locker um den Faktor 1000 schneller (eher mehr). Dort schreibst du die Daten praktisch direkt in den internen Bitmapspeicher.

Einen Pixelbuffer brauchst du meiner Meinung nach nicht. Nichts anderes liefert Canvas.ScanLine doch: Einen Zeiger auf den Pixelbuffer des Bitmaps.
Werde mich mal schlau machen wie ich das umsetzen kann

Danke.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

AW: Optimierung von Pixel

  Alt 7. Apr 2016, 18:54
Werde mich mal schlau machen wie ich das umsetzen kann
Prinzipiell wie mit Pixels , nur dass du jetzt jeweils eine Zeile des Bitmaps direkt füllen kannst (eventuell würde es sogar gehen mit dem Pointer der 1. Zeile sämtliche Daten zu schreiben, aber da Bitmapdaten auch nicht-durchgehend sein können [Strides], würde ich das vermutlich nicht riskieren).

Achten musst du nur auf die Anzahl der Bits pro Pixel. Meistens ist das in Delphi benutze Format pf24Bit . Das bedeutet, dass du pro Pixel ein R, G und B Byte hast. Bei pf32Bit kommt noch ein Alpha-Byte hinzu und alles unter pf24Bit wird kompliziert, da du dann mit Bits rechnen musst (wirst du aber vermutlich nicht brauchen).

Achso. Die Reihenfolge der Farben war nicht RGB, soweit ich mich erinnere. Da bin ich schon öfters drauf reingefallen, aber leider habe ich die korrekte Reihenfolge trotzdem schon wieder vergessen
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Optimierung von Pixel

  Alt 7. Apr 2016, 19:37
Hier was zum spielen.
Aber wie gesagt mit Pixel eine Qual..

Anhang gelöscht..

gruss

Geändert von EWeiss ( 8. Apr 2016 um 03:13 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz