![]() |
image in bytearray umwandeln ?
Hallo,
ich möchte ein image in ein array of byte umwandeln nach dieser Vorlage in VB Private Overloads Function ImageToBytes( ByVal Img As System.Drawing.Image ) As Byte() ' Konvertiert ein Image-Objekt in ein Byte-Array Dim IC As New ImageConverter ' Mithilfe des ImageConverter-Objekts ein Image ' in ein Byte-Array überführen ImageToBytes = CType(IC.ConvertTo( Img, GetType(Byte()) ), Byte()) End Function -------------------------------------------------------
Delphi-Quellcode:
was mache ich hier falsch?
var bmp : image; btmp : bitmap; pic : array of byte; ic : imageConverter; begin btmp := bitmap.Create('F:\image.gif'); ic := imageConverter.Create; result := byte(ic.Convertto(bmp, pic.GetType ) ); end Danke f. die Hilfe [edit=Luckie]Das nächste mal bitte selber die Delphi-Tags setzen. Danke. Mfg, Luckie[/edit] |
DP-Maintenance
Dieses Thema wurde von "Luckie" von "Tutorials und Kurse" nach "Multimedia" verschoben.
Das ist wohl eher kein Tutorial. ;) |
Re: image in bytearray umwandeln ?
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:
Delphi hat für Bilder unter anderem folgenede Klassen:
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; - 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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 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-2025 by Thomas Breitkreuz