AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bilder schneller laden
Thema durchsuchen
Ansicht
Themen-Optionen

Bilder schneller laden

Ein Thema von Neutral General · begonnen am 14. Nov 2008 · letzter Beitrag vom 15. Nov 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Neutral General
Neutral General

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

Bilder schneller laden

  Alt 14. Nov 2008, 19:32
Hi,

Wollte einen kleinen ImageViewer bauen. Nichts großes und auch nur zum privaten Gebrauch. Habe mir die Vampyre Imaging Lib runtergeladen. Funktioniert auch soweit super. Mein Problem ist allerdings, dass mir das Laden der Bilder z.T. zu lange dauert. Ein 1,5 MB jpeg dauert mit Vampyre ca. 460-500ms. Mit der jpeg.dcu dauerts 700+ms.

Was ich mir mal überlegt hatte, ist das vorherige und nächste Bild schon im Hintergrund zu laden, während man ein Bild anschaut. Das Problem ist aber, dass das nur bedingt helfen würde denn ein Problem wäre z.B. wenn ein mein Viewer mit einem großen Bild gestartet wird. Ich kann ja nicht vorladen, bevor mein Programm überhaupt gestartet ist....

Die Frage ist halt, wie ich das am geschicktesten anstelle, bzw obs eine Wundergraphikbibliothek gibt
Ansonsten gibts ja noch den Trick, die gefühlte Ladezeit künstlich zu verkürzen. Aber ich denke, damit kann man auch keine 500ms rausholen.

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Bilder schneller laden

  Alt 14. Nov 2008, 19:34
5 Sekunden Splashscreen und Animationen beim Bildwechsel und der Anwender merkt nichts vom Bilderladen
Markus Kinzler
  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: Bilder schneller laden

  Alt 14. Nov 2008, 19:37
Zitat von mkinzler:
5 Sekunden Splashscreen und Animationen beim Bildwechsel und der Anwender merkt nichts vom Bilderladen
Ich musste grinsen
Da ist was dran^^ Allerdings will ich zumindest relativ schnell durchblättern können, bzw die Animationen ausschalten können und dann muss es auch noch akzeptabel schnell gehn

Das mit dem Splashscreen könnte man sich ja sogar mal überlegen, wenn auch 5 Sekunden etwas übertrieben wären für nen PictureViewer (ok für ein PictureViewer ist es theoretisch generell unnötig, aber egal )
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Bilder schneller laden

  Alt 14. Nov 2008, 19:42
Ich denke für das erste Bild musst du die Ladezeit in kaufnehmen. Die folgenden Bilder kannst du dann ja in MemoryStrams laden, während das erste noch angezeigt wird*. Ein anderer Faktor dürfte die Darstellung auf der Komponente sein. Was passiert denn, wenn du während des Laden die Eigenschaft Visisble der Komponente auf False setzt oder wenn du das Bild erst in ein Bitmap im Speicher lädst und dann auf den Canvas der Komponete blittest?


') Da musst du aber mal testen, ob MemorySreams und Lo0adfromStream was bringen.
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
 
#5

Re: Bilder schneller laden

  Alt 14. Nov 2008, 19:52
Zitat von Luckie:
Ich denke für das erste Bild musst du die Ladezeit in kaufnehmen. Die folgenden Bilder kannst du dann ja in MemoryStrams laden, während das erste noch angezeigt wird*. Ein anderer Faktor dürfte die Darstellung auf der Komponente sein. Was passiert denn, wenn du während des Laden die Eigenschaft Visisble der Komponente auf False setzt oder wenn du das Bild erst in ein Bitmap im Speicher lädst und dann auf den Canvas der Komponete blittest?


') Da musst du aber mal testen, ob MemorySreams und Lo0adfromStream was bringen.
Also ich habe mir extra ein eigenes TImageEx = class(TCustomControl) gebaut. In erster Linie um Bilder propertional gestretcht anzeigen lassen zu können. Ich mache es im Moment so:

Delphi-Quellcode:
TImageEx = class(TCustomControl)
private
  FBitmap: TBitmap;
  FPicture: TPicture;
  // etc
published
  property Picture: TPicture read FPicture write SetPicture;
  // etc
end;
Und TPicture hat ein OnChange Event, indem ich folgendes tue:

Delphi-Quellcode:
procedure TImageEx.PicChanged(Sender: TObject);
begin
  with FBitmap do
  begin
    Width := FPicture.Graphic.Width;
    Height := FPicture.Graphic.Height;
    Canvas.Draw(0,0,FPicture.Graphic);
  end;
  Repaint;
end;
Im OnPaint meiner Komponente blitte ich dann mein Bitmap (gestretcht oder/und zentriert, oder....) auf den DC meiner Komponente.

Das mit dem Visible auf false setzen hab ich nicht so ganz verstanden, bzw was wäre der Nutzen?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Bilder schneller laden

  Alt 14. Nov 2008, 19:55
Zitat:
Das mit dem Visible auf false setzen hab ich nicht so ganz verstanden, bzw was wäre der Nutzen?
Das mit dem Zeichnen, gewartet ist, bis das ganze Bild geladen wurde
Markus Kinzler
  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
 
#7

Re: Bilder schneller laden

  Alt 14. Nov 2008, 20:04
Ja wird doch sowieso oder nicht?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

Re: Bilder schneller laden

  Alt 14. Nov 2008, 20:07
z.B. einige jPegs bieten doch die Möglichkeit schon angezeigt zu werden, wenn sie noch nicht ganz geladen sind ... könnte man dieses nicht irgendwie ausnutzen und es somit schon früher (nur etwas unschärfer) anzuzeigen?



Aber bezüglich des Schnell Durchblätterns...
wie wäre es wenn wenn du nicht nur das nächste und vorherrige bild vorlädst, sondern dir sowas wie diese Thumbs.db anlegst (kannst'e ja nach dem Programmende wieder löschen)

In einem Thread die Cache verwalten ... alle Bilder nacheinander abarbeiten und sofort benötigte Bilder vorrangig bearbeiten lassen.
$2B or not $2B
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Bilder schneller laden

  Alt 14. Nov 2008, 20:11
Bei progressiven Jpegs würde das gut funktionieren
Markus Kinzler
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Bilder schneller laden

  Alt 14. Nov 2008, 20:37
Bei der JPEG-Lib von Delphi kannst du ja auch das Bild vorerst halb, viertel- oder ein-achtel so groß laden.
Er liest das nur jede x-te Zeile.
Jürgen Höfs
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:55 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