Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Probleme bei einem Bitmap-Array (https://www.delphipraxis.net/14607-probleme-bei-einem-bitmap-array.html)

Hazardos 12. Jan 2004 14:23


Probleme bei einem Bitmap-Array
 
so... ich habe ein kleines Problem... Ich möchte etwa 60 Jpegs in Bítmaps umwandeln und als Array in einer Datei abspeichern...
Mein Quelltext sieht etwa so aus :

Delphi-Quellcode:
...

var Bilder : Array [1..60] of TBitmap;
...

procedure TForm1.FormCreate(Sender: TObject);
var i : integer;
var jpeg : TJpegImage;
begin
Jpeg := TJpegImage.Create;
for i := 1 to 60 do
begin
  Bilder[Spin.Value] := TBitmap.Create;
  Jpeg.LoadFromFile('C:\Bild'+IntToStr(i)+'.jpg');
  Bilder[Spin.Value].Height := Jpeg.Height;
  Bilder[Spin.Value].Width := Jpeg.Width;
  Bilder[Spin.Value].Canvas.Draw(0,0,Jpeg);
end;
end;
Beim Versuch, die Bitmaps von einer anderen Procedure aus auszulesen (oder auch nur Werte, wie .height etc.) wird mir eine Fehlermeldung angezeigt... In der Gleichen Procedure scheint es allerdings zu klappen...

Ich hoffe ihr könnt mir weiterhelfen...
mfg Hazardos

Hazardos 12. Jan 2004 14:27

Re: Probleme bei einem Bitmap-Array
 
Hat sich schon erledigt...
Ein Dummer Fehler...
Richtig hätte es so ausgesehen :

Delphi-Quellcode:

procedure TForm1.FormCreate(Sender: TObject);
var i : integer;
var jpeg : TJpegImage;
begin
Jpeg := TJpegImage.Create;
for i := 1 to 60 do
begin
  Bilder[i] := TBitmap.Create;
  Jpeg.LoadFromFile('C:\Bild'+IntToStr(i)+'.jpg');
  Bilder[i].Height := Jpeg.Height;
  Bilder[i].Width := Jpeg.Width;
  Bilder[i].Canvas.Draw(0,0,Jpeg);
end;
end;
Naja... wenigstens hab ichs jetzt richtig hinbekommen... Trotzdem danke, falls ihr euch schon Gedanken darüber gemacht haben solltet.....

mfg Hazardos

Hazardos 12. Jan 2004 15:09

Re: Probleme bei einem Bitmap-Array
 
Ich habe jetzt ein Weiteres Problem....
Kann sein, dass es auch nur wieder ein dummer Fehler war, aber egal...

Ich habe die Dateien eingelesen und möchte diese nun speichern...
EIne Fehlermeldung gibt es keine, nur ist die datei nur 240 byte groß. Die Datei kann auch von keinem anderen Programm gelesen werden... Naja.. ich stehe jetzt so ziemlich aufm Schlauch.... hoffe ihr könnt mir helfen..

Hier die Quelltexte

Schreiben der Datei
Delphi-Quellcode:
type
Pictures = Array [1..60] of TJpegImage;
P_datei = file of Pictures;
...
var Bilder : Pictures;
    Datei : P_datei;
...
procedure TForm1.FormCreate(Sender: TObject);
var i : integer;
begin
for i := 1 to 60 do
begin
  Bilder[i] := TJpegImage.Create;
  Bilder[i].LoadFromFile('C:\Bild'+IntToStr(i)+'.jpg');
end;

assignfile (datei,'C:\test.dat');
rewrite (datei);
reset (datei);
write (datei,Bilder);
closefile (datei);
Öffnen der Datei
Delphi-Quellcode:
type
  Pictures = Array [1..60] of TJpegImage;
  P_datei = file of Pictures;
...
var Bilder : Pictures;
    Datei : P_datei;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
  assignfile (datei,'C:\test.dat');
  reset (datei);
  read (datei,Bilder);
end;

procedure TForm1.SpinChange(Sender: TObject);
begin
  Bild.Picture.Bitmap.Height := Bilder[Spin.Value].Height;
  Bild.Picture.Bitmap.Width := Bilder[Spin.Value].Width;
  Bild.Picture.Bitmap.Canvas.Draw(0,0,Bilder[Spin.value]);
end;

dizzy 12. Jan 2004 17:25

Re: Probleme bei einem Bitmap-Array
 
Zitat:

write (datei,Bilder);
Ein sehr beliebter Fehler! Du schreibst dir keineswegs dein array in eine Datei, sondern lediglich den Pointer auf das array! Daher die geringe Größe.

Einfacher wäre es die Bilder einzeln als .bmp zu speichern, oder halt wieder mit TJPEGImage.SaveToFile(Pfad) als .jpg.

Hazardos 12. Jan 2004 17:54

Re: Probleme bei einem Bitmap-Array
 
das ist ja gerade das, was ich vermeiden wollte...
Gibt es nicht irgendwie die Möglichkeit, alle Bilder in EINER Datei abzuspeichern??


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