AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit JPEGImage

Ein Thema von Legolas · begonnen am 16. Jul 2004 · letzter Beitrag vom 17. Jul 2004
Antwort Antwort
Benutzerbild von Legolas
Legolas

Registriert seit: 28. Sep 2003
Ort: Frankfurt am Main
72 Beiträge
 
Delphi 2005 Personal
 
#1

Probleme mit JPEGImage

  Alt 16. Jul 2004, 20:16
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:
...
var Bild: TJPEGImage;
Bild.Create;
Bild.Assign(Image1.Picture);
...
Hier bekommen ich aber eine EConvertError.

Hat jemand eine Idee wie ich das machen kann?
Grüße Legolas

Wissen ist Macht.
Wir wissen nichts, macht nichts.
  Mit Zitat antworten Zitat
rantanplan99
(Gast)

n/a Beiträge
 
#2

Re: Probleme mit JPEGImage

  Alt 16. Jul 2004, 21:24
Die Delphi Online-Hilfe biete folgendes Beispiel:

Delphi-Quellcode:
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;
Bei dir fehlt also nur ein .Bitmap bei deinem Assign Aufruf
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Probleme mit JPEGImage

  Alt 16. Jul 2004, 21:38
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
TPicture = class(TInterfacedPersistent, IStreamPersist) und somit von einem ganz anderem Typ
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Legolas
Legolas

Registriert seit: 28. Sep 2003
Ort: Frankfurt am Main
72 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Probleme mit JPEGImage

  Alt 16. Jul 2004, 21:38
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:
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!!!!
...
Vieleicht kann jemand was mit diesem stück Quellcode anfangen. Der Inhalt soll jetzt in dem Array gespeichert werden.
Ich bekomme aber immer an der arkierten Stelle eine Zugriffsverletzung.
Grüße Legolas

Wissen ist Macht.
Wir wissen nichts, macht nichts.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Probleme mit JPEGImage

  Alt 16. Jul 2004, 21:42
ganz simpel: dein Befehl
ts[0].Vorschau.Assign(Image1.Picture.Bitmap); versucht eine Methode von "ts[0].Vorschau" zu verwenden. Allerdings hast du niergends vorher
ts[0].Vorschau := TJPEGImage.Create; aufgerufen
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Legolas
Legolas

Registriert seit: 28. Sep 2003
Ort: Frankfurt am Main
72 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Probleme mit JPEGImage

  Alt 16. Jul 2004, 21:51
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:
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;
Fehler habe ich laut Delphi nicht mehr drin.
Grüße Legolas

Wissen ist Macht.
Wir wissen nichts, macht nichts.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Probleme mit JPEGImage

  Alt 16. Jul 2004, 21:59
anstelle von
fs.Write(pchar(ts[i].Text1)^,len); kannst du auch
fs.Write(ts[i].Text1[1],len); scrheiben.

Wie ich das so sehe speichert er deine JPEG nicht in die datei weil du
fs.Write(ts[i].Vorschau,sizeof(ts[i].Vorschau)); aufrufst und
sizeof(ts[i].Vorschau) 4 ist da Vorschau ein TJPEGImage ist und somit nur ein Pointer

du solltest das ganze so machen
ts[i].Vorschau.SaveToStream(fs);
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Legolas
Legolas

Registriert seit: 28. Sep 2003
Ort: Frankfurt am Main
72 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Probleme mit JPEGImage

  Alt 17. Jul 2004, 21:10
Hallo SirThornberry,

danke für deine Hilfe. Jetzt funktioniert es wie ich es mir vorgestellt habe.
Grüße Legolas

Wissen ist Macht.
Wir wissen nichts, macht nichts.
  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 00:48 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