-2

我想将 JPEG 图像加载到 blob 字段中,可以吗?我搜索了很多,但没有找到明确的答案。

我使用这段代码:

var
  BlobField : TBlobField;
  Stream : TMemoryStream;
begin
  BlobField := ClientDataSet1.FieldByName('image');
  // Img is TImage and contain a JPEG image 
  Img.Picture.Graphic.SaveToStream(Stream); 
  Stream.Position := 0;
  BlobField.LoadFromStream(Stream);  // <-- Error: "Bitmap image is not valid"

我必须使用位图图像?

已解决:问题是表单上的 TDBImage 组件!。该组件仅链接到该字段以进行测试,并且由于它仅适用于位图,因此会出现错误

4

2 回答 2

0

我使用这样的代码

image1.Picture.LoadFromFile (filename);
fs:= TFileStream.Create (filename, fmOpenRead);
try
 blobfield.LoadFromStream (fs);
finally
 fs.Free;
end;

写完之后,我想知道第一行是干什么用的。大概是为了在屏幕上显示图像,同时将其保存到数据库(或更准确地说,保存到 blobfield)。

于 2013-09-12T09:33:23.043 回答
0

尝试使用

Img.Picture.Bitmap.SaveToStream(Stream)

即位图属性而不是图形

--

如果你不想使用图像的位图,你可以使用 TJPEGImage。

因此,例如:

var
  MyJPEGImage: TJPEGImage;

[ ... ]

MyJPEGImage := TJPEGImage.Create;
MyJPEGImage.Assign(Img.Picture.Bitmap);
MyJPEGImage.SaveToStream(Stream);
Stream.Position := 0;
BlobField.LoadFromStream(Stream);

尝试这个。

于 2013-09-12T09:29:40.077 回答