我想将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一起使用,因此会出现错误
答案 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)。