讀取 BLOB和寫入 BLOB ﹖﹖﹖﹖﹖﹖﹖﹖﹖﹖﹖(100分)

  • 主题发起人 主题发起人 qinmingzsj
  • 开始时间 开始时间
Q

qinmingzsj

Unregistered / Unconfirmed
GUEST, unregistred user!
我的讀取原代碼如下﹕
var imagestream: TMemoryStream;
jpg: TJPEGImage;
begin
try
jpg := TJPEGImage.Create;
imagestream := TMemoryStream.Create;
if not GSDQINDataModule.Qry_GS_MAKEHEAD.FieldByName('PICTURE').IsNull then
begin
TBlobField(GSDQINDataModule.Qry_GS_MAKEHEAD.FieldByName('PICTURE')).SaveToStream(imagestream);
jpg.LoadFromStream(imagestream);
Image_PICTURE.Picture.Assign(jpg);
imagestream.Free;
end;
except
end;
end;

我的保存原代碼如下﹕
var imagestream: TMemoryStream;
jpg: TJPEGImage;
begin
jpg := TJPEGImage.Create;
imagestream := TMemoryStream.Create;
jpg.Assign(GSDMAKEFRM.Image_PICTURE.Picture);
jpg.SaveToStream(imagestream);
TBlobField(Qry_GS_MAKEHEAD.FieldByName('picture')).LoadFromStream(imagestream);
end;
imagestream.Free;
jpg.Free;
end;

但是每次我讀取 時都提示我"JPEG ERROR #41 "
請哪位高手指教﹗
 
jpg.LoadFromStream(imagestream);

TBlobField(Qry_GS_MAKEHEAD.FieldByName('picture')).LoadFromStream(imagestream);
的前面是否用
imagestream.Position:=0 试试
 
不是jpg格式
 
var blobField:TblobField;

blobField:=TblobField.create(nil);
blobField(GSDQINDataModule.Qry_GS_MAKEHEAD.FieldByName('PICTURE')).loadFromFile(filename);
 
不支持jpg,支持bmp,你用bmp试一试啦,一定可以的
 
pipi:

我加入imagestream.Position:=0﹐但是在寫入時出現"BITMAP IMAGE IS NOT VALID "
趕快幫我呀﹗﹗﹗﹗﹗
 
各位高手幫幫忙﹐我自己測試問題就出在 TBlobField(Qry_GS_MAKEHEAD.FieldByName('picture')).LoadFromStream(imagestream);
提示"BITMAP IMAGE IS NOT VALID " ﹐誰能夠告訴我該怎么辦嗎﹖﹖﹖﹖﹖
求求大家了﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗1


var imagestream: TMemoryStream;
jpg: TJPEGImage;
begin
jpg := TJPEGImage.Create;
imagestream := TMemoryStream.Create;
jpg.Assign(GSDMAKEFRM.Image_PICTURE.Picture);
jpg.SaveToStream(imagestream);
TBlobField(Qry_GS_MAKEHEAD.FieldByName('picture')).LoadFromStream(imagestream);
end;
imagestream.Free;
jpg.Free;
end;
 
1.试试下面的代码
var imagestream: TMemoryStream;
jpg: TJPEGImage;
begin
jpg := TJPEGImage.Create;
imagestream := TMemoryStream.Create;
jpg.Assign(GSDMAKEFRM.Image_PICTURE.Picture);
jpg.SaveToStream(imagestream);
imagestream.Seek(0,0);//<----必须将流的指针重置到开始位置
//在QUERY中写更新语句,
.....
ParamByname('IMAGE').LoadFromStream(imagestream,ftBlob);
......
end;
imagestream.Free;
jpg.Free;
end;

 
关注!
我现有的应用中也会出现此错误
是类似TBlobField(Qry_GS_MAKEHEAD.FieldByName('picture')).LoadFromFile()的方法
但当遇到有些文件时就会报"BITMAP IMAGE IS NOT VALID"
由于只是遇到了几次,所以也没怎么去管它
现在才看到这是类似的问题, 哪位有空帮忙看一吧。 :)
 
FieldByName('picture')).LoadFromStream 出现 BITMAP IMAGE IS NOT VALID ?
你的字段picture是什么数据库的什么数据类型啊?
 
当然是BLOB了, 所以说这是个很奇怪的错误
而且还不好调试,因为不知什么时候会报这个错误
 
to qinmingzsj: 你那是每次都会报这个错误吗?
 
我是问qinmingzsj啊
 
应该是一样的
跟FieldType没有关系
 
大概跟数据库的字段类型有点关系,说出来先
 
用TABLE试试!
 
以下代码,在D5,DB2下通过:
var
imagestream: TMemoryStream;
jpg: TJPEGImage;
begin
jpg := TJPEGImage.Create;
imagestream := TMemoryStream.Create;
jpg.Assign(Image1.Picture);
jpg.SaveToStream(imagestream);
imagestream.Position:=0;
Table.Edit;
TBlobField(Table.FieldByName('mbwj')).LoadFromStream(imagestream);
Table.Post;
imagestream.Free;
jpg.Free;
end;
 
各位大俠﹐我的數據庫是SQL2000,PICTURE字段是IMAGE.每次用IMAGE保存*.jpg時候就出錯﹗
我試過了各位大俠告訴我的方法但是還是一樣﹗

請大家費心幫我解決吧﹐我的頭都要匝啦﹗﹗

 
不知是不是跟SQL2000的字段类型有关
但我用的是Oracle的BLOB字段, 偶尔也会报那个错误
 
对了, 你是不是用了DBImage控件? 因为每次都报错的话可能就不是其他原因了
而是因为DBImage不支持JPEG格式的图象。

不过我那个也会报错就不知道什么原因了,因也没有用任何控件,只是上传附件而已。 :(
 
后退
顶部