GUID下载转换并显示各种格式图片,看看哪里错了
procedure TForm1.Button1Click(Sender: TObject);
var
Stream: IStream;
ImgGUID: TGUID;
img: TGPImage;
memoStream, OleStream: TStream;
begin
//将图片下载保存为TmemoryStream
memoStream := TMemoryStream.Create;
try {这个是图片URL}
IdHTTP1.Get(Edit1.text, memoStream);
memoStream.Position := 0;
//将TmemoryStream转成IStream
Stream := TStreamAdapter.Create(memoStream);
img := TGPImage.Create(Stream);
Repaint;
GetEncoderClsid('image/jpeg', ImgGUID);
img.Save('H:\1.jpg', ImgGUID);//这里正常
img.Save(Stream, ImgGUID);
//将IStream转成OleStream
OleStream := TOleStream.Create(Stream);
Image1.Picture.Bitmap.LoadFromStream(OleStream);
except
memoStream.Free;
end;
end;
[解决办法]
// 引用 jpeg 单元
procedure TForm1.Button1Click(Sender: TObject);
var
Stream: IStream;
ImgGUID: TGUID;
img: TGPImage;
jpg: TJpegimage;
memoStream, OleStream: TStream;
b: word;
begin
//将图片下载保存为TmemoryStream
memoStream := TMemoryStream.Create;
try {这个是图片URL}
IdHTTP1.Get(Edit1.text, memoStream);
{ memostream.Position:= 0;
memoStream.Read(b,2);
if b=$4d42 then showmessage('bmp');
if b=$d8ff then showmessage('jpg');
if b=$4947 then showmessage('gif');
if b=$5089 then showmessage('png'); }
memoStream.Position := 0;
//将TmemoryStream转成IStream
Stream := TStreamAdapter.Create(memoStream);
img := TGPImage.Create(Stream);
Repaint;
GetEncoderClsid('image/jpeg', ImgGUID);
img.Save('1.jpg', ImgGUID);
img.Save(Stream, ImgGUID);
// 将IStream转成OleStream
// OleStream := TOleStream.Create(Stream);
// Image1.Picture.Bitmap.LoadFromStream(OleStream);
memostream.Position:= 0;
jpg:= TJpegimage.Create;
jpg.LoadFromStream(memoStream);
Image1.Picture.Assign(jpg);
jpg.Free;
except
memoStream.Free;
end;
end;