Einzelnen Beitrag anzeigen

scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#3

Re: image in bytearray umwandeln ?

  Alt 21. Jun 2005, 16:19
Ich weis natürlich nicht, in welcher Anordnung VB die Bytes des Bildes schreibt und ob in 24 bit, 32 bit oder sonstiger Farbtiefe, aber dies hier wäre ein Ansatz (geht eventuell auch einfacher):
Delphi-Quellcode:
procedure Graphic2Bmp(AGraphic : TGraphic; var ABmp: TBitmap);
begin
  ABmp.PixelFormat := pf24bit;
  ABmp.Height := AGraphic.Height;
  ABmp.Width := AGraphic.Width;

  AGraphic.Transparent := true;
  ABmp.Canvas.Draw(0, 0, AGraphic);
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  APic: TPicture;
  ABmp: TBitmap;
  BPic: array of byte;
  PicStream: TMemoryStream;
begin
  APic := TPicture.Create;
  ABmp := TBitmap.Create;
  PicStream := TMemoryStream.Create;
  try
    APic.LoadFromFile('F:\image.gif');

    If APic.Graphic is TBitmap then
      ABmp.Assign(APic.Bitmap)
    else
      Graphic2Bmp(APic.Graphic, ABmp);

    // Byte-Array initialisieren
    SetLength(BPic, ABmp.Width * ABmp.Height * (24 div 8));
    // Z.B. ABmp.ScanLine, ABmp.Canvas.Pixels oder ABmp.SaveToStream()
    // für Bytes verwenden
    ABmp.SaveToStream(PicStream);
    PicStream.Read(BPic[0], length(BPic));
  finally
    ABmp.Free;
    APic.Free;
    PicStream.Free;
  end;
end;
Delphi hat für Bilder unter anderem folgenede Klassen:
- TImage ist für die Darstellung auf dem Bildschirm zuständig
- TPicture ist eine "Oberklasse", mit der man z.B. ein Bild aus einer beliebigen Datei über LoadFromFile() laden kann.
- TGraphic ist die Klasse, von der alle Bildsubklassen abstammen.
- TBitmap ist eine Klasse, wie der Name schon sagt, um ausschliesslich Bitmaps zu verarbeiten.

Es gibt für jedes Bildformat noch weitere Klassen (z.B. TJPEGImage, TGIFImage, TPNGImage), deren Units (z.B. JPEGImage, GIFImage, PNGImage) müssen meist noch extra in die uses eingetragen werden, damit solche Bilder per LoadFromFile() geladen werden können. JPEGImage ist bei neueren Delphi-Versionen dabei, GIFImage und PNGImage musst du dir im Internet raussuchen.
  Mit Zitat antworten Zitat