怎样在BLOB字段中保存JPEG图片(50分)

  • 主题发起人 主题发起人 dgtwb
  • 开始时间 开始时间
D

dgtwb

Unregistered / Unconfirmed
GUEST, unregistred user!
我用ASSIGN(IMAGE1.PICTURE.GRAPHIC)来保存BMP图片时一切正常,但保存JPEG或其它时就会
提示不能ASSIGN一个TJPEG的对象到BLOB字段中,为什么,怎样解决?
 
你可以试一下用TBLOBTREAM流的方式。
先建一个TFILESTREAM保存JPEG,再建立个IMAGE1的TBLOBSTREAM。
再把TFILESTREAM存入TBLOBSTREAM。
 
http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=259563
http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=264291
http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=259093
 
呵呵,N次了
 
在uses 中加入Jpeg.
 
在uses 中加入Jpeg.

并且使用TJPeg,如:
var
tmpJpeg:TJPeg;
...
begin
tmpJpeg:=TJPeg.Create(nil);
...
在tmpJpeg中载入jpeg文件
...

tmpJpeg.Free;
end;


 
可以试试下面的办法:
uses jpeg;
...
var MyImg:TJpegImage;
MyStream:TMemoryStream;
..
try
MyImg:=TjpegImage.Create;
MyImg.LoadFromFile(...);
MyStream:=TMemoryStream.Create;
Myimg.SavetoStream(MyStream);
(MyQuery.FieldByName('MyBlobField') as TBlobField).LoadFromStream(MyStream);

finally
MyImg.Free;
MyStream.Free;
end;
 
把它变成BMP文件不就行了?
 
这种程序我做过,必须用数据流的形式,这个问题我曾经琢磨了一周,才做出来,部分
模式如下:
procedure Tform1.UpdatePicToBlob();
var
JPEGImage: TJPEGImage;
BlobStream: TBlobStream;
bmp:TBitmap;
bmMode : TBlobStreamMode;
begin
try
if clipboard.HasFormat(CF_BITMAP) then
begin
bmp:=TBitmap.Create ;
JPEGImage:=TJPEGImage.Create ;
bmp.Assign(clipboard);
JPEGImage.Assign(bmp);
JPEGImage.Compress;
if table1.state=dsInsert then
bmmode:=bmWrite
else
begin
bmmode:=bmReadWrite;
Table1.edit;
end;
BlobStream := TBlobStream.Create(Table1zp, bmMode);
try
JPEGImage.SaveToStream(BlobStream);
Image1.Picture.Assign(JPEGImage);
finally
BlobStream.Free;
JPEGImage.Free ;
end;
table1.Post ;
end
else
Application.MessageBox('错误','Open Error',MB_OK + MB_DEFBUTTON1)
except
;
end;
end;
肯定好用,我都在三个工程中使用了。
 
多人接受答案了。
 
后退
顶部