![]() |
Probleme mit JPEGImage
Hallo alle zusammen,
ich weise Image1.Picture ein Bild (JPG) zu und möchte das nun in eine Variable (z.b.: Bild: TJPEGimage) kopieren. Mein bissheriger Versuch lautet so:
Code:
Hier bekommen ich aber eine EConvertError.
...
var Bild: TJPEGImage; Bild.Create; Bild.Assign(Image1.Picture); ... Hat jemand eine Idee wie ich das machen kann? |
Re: Probleme mit JPEGImage
Die Delphi Online-Hilfe biete folgendes Beispiel:
Delphi-Quellcode:
Bei dir fehlt also nur ein .Bitmap bei deinem Assign Aufruf
var
jp: TJPEGImage; //Requires the "jpeg" unit added to "uses" clause. begin jp := TJPEGImage.Create; try with jp do begin Assign(Image1.Picture.Bitmap); SaveToFile('c:\oneeye.jpg') end; finally jp.Free; end; |
Re: Probleme mit JPEGImage
Wie rantanplan99 schon geschrieben hat fehlt das .Bitmap
Grund: TBitmap und TJPEGImage sind beide von TGraphic abgeleitet und somit erben beide das Assign von TGraphic. TPicture ist wie folgt definiert
Delphi-Quellcode:
und somit von einem ganz anderem Typ
TPicture = class(TInterfacedPersistent, IStreamPersist)
|
Re: Probleme mit JPEGImage
Hallo rantanplan99,
ich habe meine Frage nicht richtig formuliert. Wie du es schreibst geht es auch aber ich will den Inhalt de Imagekomponente dann in einem Array speichern:
Code:
Vieleicht kann jemand was mit diesem stück Quellcode anfangen. Der Inhalt soll jetzt in dem Array gespeichert werden.
type
Test = Record Text1: String; Text2: String; Text3: String; Vorschau: TJPEGImage; end; Tts = array of Test; var Form1: TForm1; fs: TFileStream; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var len: LongInt; ts: Tts; i: Integer; JPEG: TJPEGImage; begin JPEG:=TJPEGImage.Create; SetLength(ts,2); ts[0].Text1:=Edit1.Text; ts[0].Text2:=Edit2.Text; ts[0].Text3:=Edit3.Text; JPEG.Assign(Image1.Picture.Bitmap); ts[0].Vorschau.Assign(Image1.Picture.Bitmap); <- Fehler!!!! ... Ich bekomme aber immer an der arkierten Stelle eine Zugriffsverletzung. |
Re: Probleme mit JPEGImage
ganz simpel: dein Befehl
Delphi-Quellcode:
versucht eine Methode von "ts[0].Vorschau" zu verwenden. Allerdings hast du niergends vorher
ts[0].Vorschau.Assign(Image1.Picture.Bitmap);
Delphi-Quellcode:
aufgerufen
ts[0].Vorschau := TJPEGImage.Create;
|
Re: Probleme mit JPEGImage
Hallo SirThornberry,
das wars, Danke. Aber ich glaube meine ganze Idee funktioniert nicht so richtig, ich habe nicht das gefühl das das Bild in der Datei gespeichert wird. Kann sich jemand bitte mal diesen Quellcode vornehmen?
Code:
Fehler habe ich laut Delphi nicht mehr drin.
type
TForm1 = class(TForm) Image1: TImage; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; type Test = Record Text1: String; Text2: String; Text3: String; Vorschau: TJPEGImage; end; Tts = array of Test; var Form1: TForm1; fs: TFileStream; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var len: LongInt; ts: Tts; i: Integer; JPEG: TJPEGImage; begin SetLength(ts,2); ts[0].Text1:=Edit1.Text; ts[0].Text2:=Edit2.Text; ts[0].Text3:=Edit3.Text; ts[0].Vorschau:=TJPEGImage.Create; ts[0].Vorschau.Assign(Image1.Picture.Bitmap); label1.Caption:=IntToStr(sizeof(ts[0].Vorschau)); fs:=TFileStream.Create('D:\test.adb',fmCreate); len:=Length(ts); fs.Write(len,sizeof(len)); for i:=0 to Length(ts)-1 do begin Len:=Length(ts[i].Text1); fs.Write(len,sizeof(len)); fs.Write(pchar(ts[i].Text1)^,len); Len:=Length(ts[i].Text2); fs.Write(len,sizeof(len)); fs.Write(pchar(ts[i].Text2)^,len); Len:=Length(ts[i].Text3); fs.Write(len,sizeof(len)); fs.Write(pchar(ts[i].Text3)^,len); fs.Write(ts[i].Vorschau,sizeof(ts[i].Vorschau)); end; end; |
Re: Probleme mit JPEGImage
anstelle von
Delphi-Quellcode:
kannst du auch
fs.Write(pchar(ts[i].Text1)^,len);
Delphi-Quellcode:
scrheiben.
fs.Write(ts[i].Text1[1],len);
Wie ich das so sehe speichert er deine JPEG nicht in die datei weil du
Delphi-Quellcode:
aufrufst und
fs.Write(ts[i].Vorschau,sizeof(ts[i].Vorschau));
Delphi-Quellcode:
4 ist da Vorschau ein TJPEGImage ist und somit nur ein Pointer
sizeof(ts[i].Vorschau)
du solltest das ganze so machen
Delphi-Quellcode:
ts[i].Vorschau.SaveToStream(fs);
|
Re: Probleme mit JPEGImage
Hallo SirThornberry,
danke für deine Hilfe. Jetzt funktioniert es wie ich es mir vorgestellt habe. :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 Uhr. |
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 by Thomas Breitkreuz