AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bild laden mit Progressbar zu langsam
Thema durchsuchen
Ansicht
Themen-Optionen

Bild laden mit Progressbar zu langsam

Ein Thema von Neutral General · begonnen am 10. Nov 2005 · letzter Beitrag vom 10. Nov 2005
Antwort Antwort
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Bild laden mit Progressbar zu langsam

  Alt 10. Nov 2005, 19:32
Hi,

Also ich lade ein eigenes Bildformat in mein Programm rein. Bildformat ist übertrieben. Eigentlich wird in eine Textdatei nur die Größe und jeder einzelne Pixel reingeschrieben.

Das laden klappt wunderbar.

Delphi-Quellcode:
  Progress.Position:= 0;
  Progress.Max := Form.Height * Form.Width;
  for J:= 0 to StrToInt(Laden.Strings[1]) do begin
   Application.ProcessMessages;
   for i:= 0 to StrToInt(Laden.Strings[0]) do begin
    if Pos('cl',Laden.Strings[Zahl]) = 0 then begin
     Form.Image321.Canvas.Pixels[i,j] := StringToColor('$00'+Laden.Strings[Zahl]);
    end
    else begin
     Form.Image321.Canvas.Pixels[i,j] := StringToColor(Laden.Strings[Zahl]);
    end;
    inc(Zahl);
    Progress.Position := Zahl;
   end;
  end;
Das funktioniert wie gesagt. Natürlich dauert das laden schon etwas länger als bei normalen Bildformaten weil meine Dateien auch um einiges größer sind Wenn ich die Zeile
   Progress.Position := Zahl; weglasse dann ist das um EINIGES schneller. Nur wird halt der Ladefortschritt nicht angezeigt.. Und was bringt mir eine Anzeige vom Ladevorgang wenn dadurch das Laden min 3 mal so lange wenn nicht sogar noch länger dauert -.-
Kann man das nicht irgendwie schneller machen? Das kann doch nicht sein das diese eine Zuweisung sooo viel Zeit braucht..

PS: Sagt mir nicht das mein Bildformat Schwachsinn ist oder so, das weiß ich auch aber ich habs immerhin erfunden
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Bild laden mit Progressbar zu langsam

  Alt 10. Nov 2005, 19:35
Grafische Ausgaben sind das lamgsamste, was es gibt unter Windows und das Zeichnen der Fortschrittsanzeige dauert eben. Ein Lompromis wäre die Fortschrittsanzeige eben nur bei jedem X'ten Durchlauf zu aktualisieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Bild laden mit Progressbar zu langsam

  Alt 10. Nov 2005, 19:40
Zitat von Luckie:
Grafische Ausgaben sind das lamgsamste, was es gibt unter Windows und das Zeichnen der Fortschrittsanzeige dauert eben. Ein Lompromis wäre die Fortschrittsanzeige eben nur bei jedem X'ten Durchlauf zu aktualisieren.
Danke
Eine simple aber geniaaale Idee. Hätte ich eigentlich auch mal draufkommen können
Jetzt aktuallisiere ich nur alle 3 Pixel und es geht wieder richtig schnell.. wobei ich glaube jeder 10. Pixel reicht auch dicke..
Michael
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: Bild laden mit Progressbar zu langsam

  Alt 10. Nov 2005, 21:47
Ich behaupte hier einfach mal, dass es auch reicht nach einer Zeile zu aktualisieren. Schließlich muss zum neu zeichnen ne Menge an Nachrichten verarbeitet werden oder anders gesagt, es braucht viiiiiiiiiel Rechenzeit. Da Application.ProcessMessages genau diese bereitstellt, könntest du dein Progressbar auch genau vor dessen Aufruf schreiben und es sollte nicht seltener aktualisiert werden als jetzt.
Ansonsten bekommst du das Laden mit ScanLine i.d.R. auch noch um einiges schneller hin. Ist aber auch etwas komplizierter. Musst beim Einsatz von Scanline unbedingt auf das Pixelformat achten. Mit pf32Bit kannst du theoretisch (ein Registerwort) am effizientesten Arbeiten, aber selbst mit pf24Bit ist es schon ordentlich schnell (im Verhältnis zu Pixels).

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Bild laden mit Progressbar zu langsam

  Alt 10. Nov 2005, 22:38
Die Progressbar ist doch idR in Prozent, oder?

Also reicht es doch bei z.B. einem Megapixel, wenn sich die Anzeige nur alle 10.000 Pixel aktualisiert. Also ein hundertstel.
  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 07:47 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