L
leeeeleeee
Unregistered / Unconfirmed
GUEST, unregistred user!
function TForm1.GetBmp(const filename: WideString): OleVariant;
var Bmp:TBitmap;
mstream : TMemoryStream;
begin
Bmp := TBitmap.Create;
try
Bmp.LoadFromFile(filename);
mstream := TMemoryStream.Create;
try
mstream.Clear;
Bmp.SaveToStream(mstream);
Result := MemoryStreamToOleVariant(mstream)
finally
mstream.Free;
end;
finally
Bmp.Free;
end;
end;
[
]用下面的过程取出来,可是没有图片或出错,不知错误在哪里[?]
procedure TForm1.Button1Click(Sender: TObject);
var aole : OleVariant;
mstream : TMemoryStream;
Bmp : TBitmap;
begin
//Bmp:=TBitmap.Create;
try
mstream := OleVariantToMemoryStream(GetBmp('d:/a.bmp'));
Image1.Picture.Bitmap.LoadFromStream(mstream);
//Image1.Picture.Bitmap.Assign(Bmp);
finally
//Bmp.Free;
end;
end;
附二个过程
Function MemoryStreamToOleVariant(Strm: TMemoryStream): OleVariant;
Var
Data: PByteArray;
Begin
Result := VarArrayCreate([0, Strm.Size - 1], varByte);
Data := VarArrayLock(Result);
Try
Strm.Position := 0;
Strm.ReadBuffer(Data^, Strm.Size);
Finally
VarArrayUnlock(Result);
End;
End;
Function OleVariantToMemoryStream(OV: OleVariant): TMemoryStream;
Var
Data: PByteArray;
Size: integer;
Begin
Result := TMemoryStream.Create;
Try
Size := VarArrayHighBound(OV, 1) - VarArrayLowBound
(OV, 1) + 1;
Data := VarArrayLock(OV);
Try
Result.Position := 0;
Result.WriteBuffer(Data^, Size);
Finally
VarArrayUnlock(OV);
End;
Except
Result.Free;
Result := Nil;
End;
End;
var Bmp:TBitmap;
mstream : TMemoryStream;
begin
Bmp := TBitmap.Create;
try
Bmp.LoadFromFile(filename);
mstream := TMemoryStream.Create;
try
mstream.Clear;
Bmp.SaveToStream(mstream);
Result := MemoryStreamToOleVariant(mstream)
finally
mstream.Free;
end;
finally
Bmp.Free;
end;
end;
[
![Frown :( :(](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f641.png)
procedure TForm1.Button1Click(Sender: TObject);
var aole : OleVariant;
mstream : TMemoryStream;
Bmp : TBitmap;
begin
//Bmp:=TBitmap.Create;
try
mstream := OleVariantToMemoryStream(GetBmp('d:/a.bmp'));
Image1.Picture.Bitmap.LoadFromStream(mstream);
//Image1.Picture.Bitmap.Assign(Bmp);
finally
//Bmp.Free;
end;
end;
附二个过程
Function MemoryStreamToOleVariant(Strm: TMemoryStream): OleVariant;
Var
Data: PByteArray;
Begin
Result := VarArrayCreate([0, Strm.Size - 1], varByte);
Data := VarArrayLock(Result);
Try
Strm.Position := 0;
Strm.ReadBuffer(Data^, Strm.Size);
Finally
VarArrayUnlock(Result);
End;
End;
Function OleVariantToMemoryStream(OV: OleVariant): TMemoryStream;
Var
Data: PByteArray;
Size: integer;
Begin
Result := TMemoryStream.Create;
Try
Size := VarArrayHighBound(OV, 1) - VarArrayLowBound
(OV, 1) + 1;
Data := VarArrayLock(OV);
Try
Result.Position := 0;
Result.WriteBuffer(Data^, Size);
Finally
VarArrayUnlock(OV);
End;
Except
Result.Free;
Result := Nil;
End;
End;