将JPEG图像加载到BlobField中

时间:2013-09-12 09:15:44

标签: database delphi

我想将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组件!该组件仅与测试链接到该字段,因为它仅与bitmat一起使用,因此会出现错误

2 个答案:

答案 0 :(得分: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);

试试这个。

答案 1 :(得分:0)

我使用这样的代码

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

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