Hey!
Sorry, dass ich in diesem realtiv alten Thread noch einmal poste, aber mein Problem passt dort einfach perfekt hin.
Ich habe eine JPEG-Datei runtergeladen und möchte die jetzt aber auch bearbeiten können.
Soweit ich weiß geht das nur mit bmp's, also hab ich folgendes versucht:
Delphi-Quellcode:
var
myClient: TidHTTP;
myMemoryStream: TMemoryStream;
myJPEG: TJPEGimage;
var bitm : TBitmap; //<----
begin
myClient := TidHTTP.Create(Self);
myMemoryStream := TMemoryStream.Create;
myJPEG := TJPEGImage.Create;
try
myClient.Get('http://server/img.jpg', myMemoryStream);
myMemoryStream.Position := 0;
myJPEG.LoadFromStream(myMemoryStream);
Image1.Picture.Graphic := myJPEG; //Das funktionier hervorragend
bitm := TBitmap.Create;
bmp_img.Assign(myJPEG); //Hier liegt das Problem!!
Image1.Picture.Bitmap := bmp_img;
finally
myJPEG.Free;
myMemoryStream.Free;
myClient.Free;
end;
end;
Als Parameter fordert die .Assign() Funktion einen TPersistent, kann es sein, das dort der Fehler liegt, weil mein JPEG nicht gespeichert ist?
Generell habe ich mit der Funktion und JPEG-Dateien nie ein Problem gehabt, aber die kamen auch nie aus einem Stream...
Hat jemand eine Idee, wieso da folgende Fehlermeldung kommt??
Zitat:
Project Project1.exe raised
exception class EAccessViolation with message '
Access violation at address 00487C29 in module 'Project1.exe'. Read of address 00000000'. Process stopped. Use Step or Run to continue.
Vielen Dank noch an kachel81 für den Quelltext!