Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Nicht bekannte Bilddatei in Timage laden (https://www.delphipraxis.net/178475-nicht-bekannte-bilddatei-timage-laden.html)

Sunec 9. Jan 2014 21:09

Delphi-Version: 5

Nicht bekannte Bilddatei in Timage laden
 
Hallo zusammen!

Ich arbeite momentan mit Firemonkey.

Es geht um folgendes:

Ich möchte eine Bilddatei (JPEG Format) in ein TImage laden. Die Bilddatei hat jedoch nicht die Dateiendung .jpg sondern .thumb.

Eine Ändern der Dateiendung möchte ich möglichst vermeiden. Leider ist dies der einzig bisher mir bekannte Weg.

Gibt es eine Möglichkeit besagte .thumb Datei als .jpg zu interpretieren und zu laden?

Nachdem ich mehrere Stunden leider erfolglos im Internet gesucht habe, fiel der Entschluss diesen Post zu verfassen.

Meine momentange Lösung:

Delphi-Quellcode:
procedure Tfm_main.Button2Click(Sender: TObject);
var
  oldFile, newFile : string;
begin
  oldFile := 'D:\a.thumb';
  newFile := ChangeFileExt(oldFile, '.jpg');
  RenameFile(oldFile, newFile);
  ImageControl1.Bitmap.LoadFromFile(newFile);
  RenameFile(newFile, oldFile);
end;

Für jegliche Hilfe bin ich dankbar!

Einen schönen Abend!
- Sunec

Sir Rufo 9. Jan 2014 21:29

AW: Nicht bekannte Bilddatei in Timage laden
 
Was möchtest du denn damit erreichen?

Hast du irgendwo ein Bild liegen und möchtest aber nur den zugehörige Thumbnail anzeigen oder geht es tatsächlich ausschließlich um den Thumbnail?

Volker Z. 10. Jan 2014 00:47

AW: Nicht bekannte Bilddatei in Timage laden
 
Hallo,

Zitat:

Ich arbeite momentan mit Firemonkey [...] Ich möchte eine Bilddatei (JPEG Format) in ein TImage laden. Die Bilddatei hat jedoch nicht die Dateiendung .jpg sondern .thumb.
vermute mal, schlechte Karten, wenn keine Standarddateierweiterung.

Zitat:

Eine Ändern der Dateiendung möchte ich möglichst vermeiden. Leider ist dies der einzig bisher mir bekannte Weg.
Vielleicht bleibst Du besser dabei.

Zitat:

Gibt es eine Möglichkeit besagte .thumb Datei als .jpg zu interpretieren und zu laden?
Ja gäbe es schon. Allerdings ist die Variante nicht wirklich schön: Kopiere die FMX.Canvas.D2D.pas in Dein Projektverzeichnis und ergänze dort den Code wie folgt:
Delphi-Quellcode:
initialization
  // Die Zeile am Ende einfügen
  TBitmapCodecManager.RegisterBitmapCodecClass ('.thumb', 'Irgendein Text zu .thumb', False, TBitmapCodecWIC);
Dann könntest Du Deine Routine so abändern:
Delphi-Quellcode:
procedure Tfm_main.Button2Click(Sender: TObject);
begin
  ImageControl1.Bitmap.LoadFromFile ('D:\a.thumb')
end;
Doof nur, dass man dazu die FMX.Canvas.D2D.pas ändern muss. Ich habe bis jetzt keinen Weg gefunden dies zu umgehen (oder bin ich nur zu blöd die geniale Struktur dahinter zu erkennen). Ein:
Delphi-Quellcode:
procedure Tfm_main.Button2Click(Sender: TObject);
begin
  TBitmapCodecManager.RegisterBitmapCodecClass ('.thumb', 'Irgendein Text zu .thumb', False, ...);
  ImageControl1.Bitmap.LoadFromFile ('D:\a.thumb')
end;
funktioniert leider nicht, denn die Deklaration von TBitmapCodecWIC haben die Schwachb...... bei Emba leider in den Implementationsteil der Unit gepackt.

Aber vielleicht hat ja noch ein Kollege eine Idee.


Gruß

BTW: Herzlich Willkommen in der DP

Sunec 10. Jan 2014 06:17

AW: Nicht bekannte Bilddatei in Timage laden
 
Guten Morgen!

Zitat:

Zitat von Sir Rufo (Beitrag 1242940)
Hast du irgendwo ein Bild liegen und möchtest aber nur den zugehörige Thumbnail anzeigen oder geht es tatsächlich ausschließlich um den Thumbnail?

Es geht ausschließlich um das Thumbnail. Eine Bilddatei ist nicht vorhanden.



@Volker Z.

Vielen Dank für deine ausführliche Erläuterung, ich weiß dies zu schätzen.

Ich werde auf der kopierten FMX.Canvas.D2D.pas wechseln. Auch wenn dies wohl nicht die Optimallösung ist, so ziehe ich sie der Änderung der Dateiendung vor.


Zitat:

Zitat von Volker Z. (Beitrag 1242950)
BTW: Herzlich Willkommen in der DP

Dankeschön! :)

Sir Rufo 10. Jan 2014 07:55

AW: Nicht bekannte Bilddatei in Timage laden
 
Oder man macht es sich einfacher mit
Delphi-Quellcode:
procedure Tfm_main.Button2Click(Sender: TObject);
var
  LFileName : string;
  LStream : TStream;
begin
  LFileName := 'D:\a.thumb';
  LStream := TFileStream.Create( LFileName, fmOpenRead );
  try
    ImageControl1.Bitmap.LoadFromStream( LStream );
  finally
    LStream.Free;
  end;
end;

Sunec 10. Jan 2014 11:32

AW: Nicht bekannte Bilddatei in Timage laden
 
Zitat:

Zitat von Sir Rufo (Beitrag 1242966)
Oder man macht es sich einfacher mit

Danke auch für diesen Lösungsweg!


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:33 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