我目前遇到了一个问题,我将显示在TImage组件中的图像进行转换,并将其存储在BLOB字段中。现在我知道这不是一个优化的解决方案,但就我的目的而言,这是很好的。不会存储大量的图像。
图像被保存到MySQL数据库的Blob字段中。当我想要在TImage组件中再次显示图像时,问题就来了,它只显示了图像的一半,bottem部分在某种程度上被破坏了。
下面是插入到数据库中的代码:
image1.Picture.LoadFromFile(fileName);
if image1.Picture.Graphic <> nil then
begin
Field := TBlobField(database.qDBImages.FieldByName('image_one'));
stream_one := database.qDBImages.CreateBlobStream(Field, bmWrite);
try
image1.Picture.Graphic.SaveToStream(stream_one);
ShowMessage('we are saving to stream');
finally
database.qDBImages.Post;
stream.Free;
end;现在,当我必须将值显示回TImage中时,问题就来了,然后它就被破坏了。以下是显示图像的代码:
var
Field : TBlobField;
Stream : TStream;
Jpg : TJPEGImage;
begin
database.qDBImages.Active := true;
if database.qDBImages.Active then
begin
Field := TBlobField(database.qDBImages.FieldByName('image_one'));
Stream := database.qDBImages.CreateBlobStream(Field, bmRead);
Jpg := TJPEGImage.Create;
try
Jpg.LoadFromStream(Stream);
Image1.Picture.Graphic := Jpg;
finally
Jpg.Free;
Stream.Free;
end;
end;有没有其他方法可以将图像转换为blob字段,并且在检索时不会损坏?
我确实在某处读到,这可能与斑点的长度有关,但我不确定。
有什么方法可以改善这一点吗?
发布于 2020-11-11 21:49:41
因此,解决方案取自Oliver on top的建议。我刚刚将blob字段更改为mediumblob字段,将最大大小从64KB增加到16MB。所以多亏了Olivier
https://stackoverflow.com/questions/64783253
复制相似问题