AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Vorschaubilder ähnlich schnell wie Win-XP erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Vorschaubilder ähnlich schnell wie Win-XP erstellen

Ein Thema von axelf98 · begonnen am 13. Jun 2005 · letzter Beitrag vom 14. Jun 2005
Antwort Antwort
axelf98

Registriert seit: 27. Aug 2003
Ort: Ennepetal
440 Beiträge
 
Delphi 2005 Personal
 
#1

Vorschaubilder ähnlich schnell wie Win-XP erstellen

  Alt 13. Jun 2005, 02:57
Hallo!

Ich programmiere grad ein Fotopräsentationsprogramm, das kleine Vorschaubilder zeigen soll. Ich habe es schon geschafft, eine recht flotte Vorschau zu realisieren, aber es ist noch lang nicht auf XP-Niveau. Mein Code:

Delphi-Quellcode:
function TFotoShow.VorschauladenEinzeln(sFoto:TFoto):boolean; //TFoto ist ein Record mit einem TBitmap
var LadImage: Timage;
    Verh: Double;

    hoehe, weite,x: integer;
begin
result := true;
 try
  LadImage := TImage.Create(nil);
  LadImage.Picture.LoadFromFile(sFoto.FileScr);
  if (LadImage.Picture.Width > 0) AND (LadImage.Picture.Height > 0)then
  begin
   Verh := LadImage.Picture.Width/LadImage.Picture.Height;
   sFoto.Vorschau.Width := VorschauGr;
   sFoto.Vorschau.Height:= VorschauGr;
   if Verh >= 1 then
   begin
    hoehe := Round(VorschauGr/Verh);
    x := round((VorschauGr-hoehe)/2);
    sFoto.Vorschau.Canvas.StretchDraw(Rect(0,x,VorschauGr,hoehe+x),LadImage.Picture.Graphic); // das ist das langsamste
   end ELSE
   begin
    weite := Round(VorschauGr*Verh);
    x := round((VorschauGr-weite)/2);
    sFoto.Vorschau.Canvas.StretchDraw(Rect(x,0,weite+x,VorschauGr),LadImage.Picture.Graphic); // das ist das langsamste
   end;
  end ELSE
  begin
  result := false;
  Fehlerprotokoll.Add('Fehler bei den Bildgrößen bei "'+sFoto.FileScr+'"');
  end;
  LadImage.Free;
 except
  Fehlerprotokoll.Add('Kann keine Vorschau erzeugen von "'+sFoto.FileScr+'"');
  result := false;
  if LadImage <> nil then LadImage.Free;
  end;
end;
Hat von euch einer eine Idee, wie man die Bildverkleinerung optimieren kann?

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Vorschaubilder ähnlich schnell wie Win-XP erstellen

  Alt 13. Jun 2005, 03:04
Hallo axelf98,

wenn du dir die versteckten Dateien im einem der Ordner mit Bildvorschau anzeigen laesst, siehst du dass Windows diese Vorschaubilder in einer db-Datei abspeichert. Nur dadurch wird es so schnell

Zu deinem Code: ich empfehle dir die Verwendung von MSDN-Library durchsuchenStretchBlt, das arbeitet etwas schneller als StretchDraw

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
axelf98

Registriert seit: 27. Aug 2003
Ort: Ennepetal
440 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Vorschaubilder ähnlich schnell wie Win-XP erstellen

  Alt 13. Jun 2005, 03:46
Zitat von alcaeus:
wenn du dir die versteckten Dateien im einem der Ordner mit Bildvorschau anzeigen laesst, siehst du dass Windows diese Vorschaubilder in einer db-Datei abspeichert. Nur dadurch wird es so schnell
Ich hab das Gefühl und hab es auch getestet, dass der auch ohne Thumbs.db (mal eben die Datei löschen, dann Ansicht umschalten) die Vorschaubilder ziemlich schnell macht. Deinen anderen Tipp werd ich mir noch genauer anschaun!
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Vorschaubilder ähnlich schnell wie Win-XP erstellen

  Alt 13. Jun 2005, 08:54
das täuscht, selbst ohne thumbs.db braucht windows eine Zeit. Es kommt dir nur so schnell vor weil das ganze in einem Thread passiert und du die ersten bilder siehst bevor der Vorgang komplette abgeschlossen ist. Soll heißen - du siehst im Explorer ca. 12 Vorschaubilder und diese sind recht schnell erstellt, im Hintergrund werden dann die restlichen Bilder die im nicht sichtbaaren Bereich sind erstellt.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
axelf98

Registriert seit: 27. Aug 2003
Ort: Ennepetal
440 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Vorschaubilder ähnlich schnell wie Win-XP erstellen

  Alt 13. Jun 2005, 23:54
Hi

Ich hab es nach einigem Probieren geschafft, einen Code zu "schreiben", der Thumbnails, also Vorschaubilder schnell (ähnlich wie in Windows XP) erstellt. Der braucht ungefähr 7 Sekunden für 60 6-Megapixel-Bilder für beliebig große Thumbs auf einem 1,6 Ghz Centrino. Folgend der Code:
Delphi-Quellcode:
procedure ...
    Extention: String;
    LadBitmap, Vorschau: TBitmap;
    jpg: TJPEGImage;
begin
 Extention := Ansilowercase(Extractfileext(sFoto.FileScr));

 if (Extention = '.jpg') OR (Extention = '.jpeg') then
 begin /// JPGS schnell!!!! ---------------------------------
  LadBitmap := TBitmap.Create;
  Vorschau := TBitmap.Create;
  jpg := TJPEGImage.create;
  jpg.LoadFromFile(sFoto.FileScr);
  jpg.Scale := jsEighth; // schnell, da nur 1/8 der Größe
  LadBitmap.Assign(jpg); // rüberkopieren

  Vorschau.Canvas.StretchDraw(Rect(0,0,VorschauGr,VorschauGr),LadBitmap);
 
  jpg.Free;
  LadBitmap.Free;
end;
Vielleicht für einen Eintrag in die Code-Lib zu gebrauchen?
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#6

Re: Vorschaubilder ähnlich schnell wie Win-XP erstellen

  Alt 14. Jun 2005, 00:02
Zitat von axelf98:
Vielleicht für einen Eintrag in die Code-Lib zu gebrauchen?
Ja, warum nicht. Poste den Code einfach in ein neues Thema in der Codelib-Sparte, schreib eine kleine Erklaerung dazu und der Code wird anschliessend aufgenommen. Danke

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
axelf98

Registriert seit: 27. Aug 2003
Ort: Ennepetal
440 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Vorschaubilder ähnlich schnell wie Win-XP erstellen

  Alt 14. Jun 2005, 00:29
Schon passiert!
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Vorschaubilder ähnlich schnell wie Win-XP erstellen

  Alt 14. Jun 2005, 00:30
Aber dann bitte mit Resoucenschutzblöcken und "FreeAndNil" anstelle von "Free" danke.

Bsp:

Delphi-Quellcode:
CreateBitmap;
try
  DoSomething;
finally
  FreeAndNil();
end;

Nachtrag: AH, hast du nun ja drin.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#9

Re: Vorschaubilder ähnlich schnell wie Win-XP erstellen

  Alt 14. Jun 2005, 05:58
Das geht bei weitem schneller
In den heutigen JPEG's der DigiCam's sind parallel zum Bild im Header ein Thumbnail gespeichert. Üblicherweise hat dieses eine Größe von 160*80 Pixel oä. Also schon bei der Erzeugung der rießigen JPEG erzeugt die DigiCam auch ein Thumbnail und speichert beides in eine JPEG Datei. Hier im Forum müsstest du nach EXIF suchen und auf einen Source jeweils von Luckie und einem von mir stoßen. Beide können dieses Thumbnail extrahieren.

Gruß Hagen
  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 23:29 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