Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi PNG und Bitmap laden (https://www.delphipraxis.net/116820-png-und-bitmap-laden.html)

Lossy eX 7. Jul 2008 12:18

Re: PNG laden
 
Zitat:

Zitat von Nils_13
Da das Bild ehrlich gesagt zu pervers war, habe ich es schnell mal wegradiert. :stupid: Der Header hat sich dadurch zum Glück nicht verändert, es gibt also weiterhin einen Fehler beim Laden.

Vielleicht liegt es auch nur daran, dass dein PNG in Wirklichkeit ein JPEG ist? Das du dann einen Fehler bekommst ist vollkommen logisch ist, denn das TPicture extrahiert intern die Dateiendung und vergleicht sie mit der Liste der registrierten Endungen. Und das hat zur Folge, dass die falsche Klasse erstellt wird. Die kann dann logischerweise nichts mit dem Inhalt anfangen und schmeißt vollkommen zu recht einen Fehler.

PS: Irfanview schlägt im übrigen sofort vor die Datei in jpeg umzubennen...

Nils_13 7. Jul 2008 12:44

Re: PNG laden
 
Das ist vielleicht eine Erlösung. Dann muss ich einen Abfang für die Exceptions einbauen, da der Fehler in dem Fall vor einiger Zeit beim Speichern stattfand. Hätte den Abfang früher oder später eh eingebaut, bloß die Frage, warum ich das nicht gleich gemacht habe :roll:

Lukas: Wäre super wenn du das noch finden könntest. :)

Könnte man das nicht eigentlich alles in einen Thread auslagern ? Dann würden nach und nach die Thumbnails erscheinen und das Programm wäre benutzbar während der Ladezeit.

DGL-luke 7. Jul 2008 12:46

Re: PNG laden
 
Klar kannst du das auslagern. Du musst die Daten dann nur wieder zurücksynchen mit einem Synchronize-Call. Sollte aber kein großes Problem darstellen.

Nils_13 7. Jul 2008 13:05

Re: PNG laden
 
Das ist gut. Habt ihr eigentlich noch eine Idee, wie man das mit den Bitmaps lösen könnte ? Habe dank einem except einfach das Standardicon von .bmp geladen, aber das ist natürlich nicht so schön, wenn dann zwei von zwanzig Bitmaps nicht geladen werden können. Eigentlich ist Bitmap das einfachste Format überhaupt. Müsste es nicht möglich sein, das direkt ohne TBitmap zu laden ? Denn TBitmap basiert soweit ich weiß auf der API und ist daher etwas zurück.

Habe die Überschrift leicht geändert, es geht schon von Anfang an nicht mehr ausschließlich um PNG, daher ziehe ich es vor, den Titel zu ändern damit ein Suchender in der Überschrift auch sieht, dass es zusätzlich noch um Bitmap geht bzw. um eine Möglichkeit die meisten Formate zu laden.

Daniel 7. Jul 2008 13:07

Re: PNG laden
 
Zitat:

Zitat von Nils_13
Denn TBitmap basiert soweit ich weiß auf der API und ist daher etwas zurück.

eh. Nein, nicht so sehr. Wenn Du ein Delphi >= Pro hast, schaue Dir die Quellen an. Im Allgemeinen ist es natürlich möglich, ein Bitmap selbst zu laden (Definition siehe wotsit.org) - aber ich würde das nicht machen.

Nils_13 7. Jul 2008 13:17

Re: PNG und Bitmap laden
 
Ich vergesse immer wieder, dass ich die Codes habe :oops:
Zitat:

Zitat von Delphi
{ TBitmap is an encapsulation of a Windows HBITMAP and HPALETTE. [...] }

Zitat:

Zitat von Lazarus
{ TSharedImage - base class for reference counted images }
{ TBitmapImage - Descendent of TSharedImage for TBitmap. If a TBitmap is assigned to another TBitmap, only the reference count will be increased and both will share the same TBitmapImage }

Ich könnte probieren das TBitmap von Lazarus rüberzuschieben, glaube zwar nicht dass es funktioniert, aber einen Versuch ist es wert. Lazarus funktioniert in dem Fall, aber dafür Delphi nicht, einer von beiden macht immer Probleme undzwar immer der auf den man angewiesen ist :mrgreen:

Edit: Geht nicht, es gibt zwei Klassen die ich ebenfalls übertragen müsste und diese würden wieder andere Klassen verlangen usw. Hatte es mir schon gedacht.

DGL-luke 7. Jul 2008 14:15

Re: PNG und Bitmap laden
 
Komisch... die Windows API müsste eigentlich alle standardgemäßen Windows-Bitmaps laden können.

Wenn TBitmap das nur kapselt, dürfte es eigentlich keine Probleme geben.

Daniel 7. Jul 2008 14:17

Re: PNG und Bitmap laden
 
Also ich weiß, dass TBitmap seine Probleme mit 32bit-Bitmaps hat, wenn diese einen Alpha-Kanal besitzen. Das geht ja neuerdings (?) ebenfalls. Ich weiß allerdings nicht, ob diese Bitmaps dann noch zu den "standardgemäßen Windows-Bitmaps" gehören.

Nils_13 7. Jul 2008 14:26

Re: PNG und Bitmap laden
 
Ich glaube meine problematischen Bitmaps sind 32er. Habe ich sinnloserweise mal als solche gespeichert. Ich bilde mir gerade ein, ich hätte irgendwo mal die Möglichkeit genutzt, die Farbtiefe auf 32Bit zu setzen, finde aber bei TBitmap nichts.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:54 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz