Verstaendnisproblem TImage
-
Warum wird alles geloescht, was man geschrieben hat, wenn man einen Smily einfuegt
*aerger und ab....*
Hab ich das richtig verstanden, dass ein TImage jedes Grafikformat annehmen kann ?
[codeschnipsel]
TJPEGImage* jpg = new TJPEGImage;
jpg->Assign(TImage::Componente->Picture->Bitmap);
[/codeschnipsel]Hab ich mal 2 Fragen.
Wofuer steht das Object Picture oben ? und
Wofuer das Object Bitmap ?
Kann Bitmap jedes Format annehemen ?Wenn ja, wie mach ich das, dass wenn ich ein Bild lade, egal welches Format
(abhaengig von der Endung) mir diesen Typ in ein Bitmap umwandeln kann, so dass
dieses Bitmap in ein anderes Format gespeichert werden kann.
Will eh nur GIF,BMP,JPG wenn nutzen.msgbeep
-
hallo,
also erst mal vorweg, die formate die du verwenden willst, sind kein problem, allerdings müssen da gewisse dinge einbebunden werden. für jpgs gibt es die unit Jpeg, welche das object TJpegImage bereitstellt und für gifs gibts im netz ein Object namens TGifImage, ähnlich anzuwenden wie TJpegImage.
Also TImage kann nicht so ohne weitere beliebige formate anzeigen oder gar abspeichern. Du musst auch bedenken, das eine jpg/gif von haus aus ja nix anderes als eine besondere bitmap ist. aber für sehr viele formate gibt es für die vcl objecte z. t freeware, so lassen sich:
-jpg
-gif
-png
-wmf
-emf
-ico
-bmp
-pcx
-tif/tiff
-etc.
alle in timage anzeigen und abspeichern, vorrausgesetzt du hat die dafür notwendigen klassen eingebunden...mfg
murph
-
Hallo murphy,
ich wollte eignetlich nur wissen, was die beiden Objecte oben mir sagen.
Welches das entscheidende ist, was die Information ueber den Inhalt und den Typ des Formats eines Bildes enthaelt und welches oder was ich da nur aendern muss, damit das funktioniert.Momentan hab ich folgendes Problem.
Ich laden ein jpg in das TImage und wenn ich es abspeichern will, dann wird ein File mit Groesse 0 angelegt und das TImage ist hinterher leer.
Woran liegt das ??msgbeep
Liegt es daran:
TImage->Picture->Assign(jpg);
delete jpg; <---------Weil wenn ich das jpg loesche, im TImage, ist ja das Picture nicht mehr belegt und zeigt somit auch nichts mehr an ????
-
Wie machst Du das Speichern genau (und wann?)?
Poste mal die wichtigsten Befehle in der richtegen Reihenfolge!
(Laden, Speichern, Deleten ...)PS: wichtig ist Befehl zum Laden und Speichern in genauer Form!
-
Das Bild liegt in ROHform da. D.h. es ist vom Typ eines TImages, wo reingemalt wird. So ist es doch ein Bitmap, oder ?
Speichern...
CurrentFile = ...
TJPEGImage *jpg = new TJ...
jpg->Assign(TImage::Componente->Picture->Bitmap)
jpg->SaveToFile(CurrntFile)
TImage::Componente->Picture->Assign(jpg)
delete jpgDas Bild wird weiterhin angezeigt, aber es liegt nun im JPG Format vor.
D.h. Picture ist nicht mehr ein Bitmap, sondern ein JPG. Ich wuerde es am liebsten wieder als ein Bitmap haben wollen. Dann wer es auch nochmals abspeicherbar.
...msgbeep
-
TImage::Componente->Picture->Bitmap->Assign(jpg);
-
Danke.
Klar das der andere Beitrag sich damit einer Sperrung unterzieht.
Die Loesung ist ja die gleiche.
Mir hat halt noch niemand den Zusammenhang von Bitmap oder Picture als Componenten von TImage erklaert. Sonst waeren meine Fragen sicher nicht gekommen.Nochmals Danke.
msgbeep
PS: Warum kompliziert, wenns auch einfahc geht ...