sybase数据库存储过程,老兄大哥快救命啊,路径问题,sybase库读取bmp,转换为JPG后,存储jpg至数据库中路径的指定 (300分)

  • 主题发起人 主题发起人 yang_delp
  • 开始时间 开始时间
Y

yang_delp

Unregistered / Unconfirmed
GUEST, unregistred user!
在读取sybase库中图片时,调用SYBASE的存储过程XP_WRITE_FILE(filename,photo),但是现在
图片只能读取至服务器端,不能读取到客户端,代码如下:SELECT xp_write_file('c:/guide
/mmm.bmp',photo) FROM table_photo,如何赋值filename参数,使其直接写到客户端.
从客户端存储图片至服务器数据库中代码如下:INSERT INTO table_photo (id, photo) VALUES ('123',
xp_read_file('路径+文件名))',存在同样问题.
 
可以使用我的控件,直接将BMP以JPEG格式存入数据库。
http://v-lan.com.cn/oopsware/vcls.htm
 
我的本意是原来数据库中存的是bmp,现在我想把它换成jpg,但以前存入的图片要通过程序来
处理,因此我必须先将BMP取出来,转换为JPG后再存入.以后库中将存入JPG文件.
 
procedure TForm1.Button1Click(Sender: TObject);
var
FBmp : TBitMap;
FJpg : TJpegImage;
begin
FBmp := TBitMap.Create;
FJpg := TJpegImage.Create;
FBmp.LoadFromStream();//自己定义一个流,从数据库读出来。
FJpg.Assign(FBmp);
FJpg.SaveToStream();//保存到流中,然后可以存入数据库。
FBmp.Free;
FJpg.Free;
end;
 
if (Query1.FieldByName('imga') as tblobfield).asstring='' then
exit;
else
begin
try
m_jpegStream:=TMemoryStream.Create;
(Query1.fieldbyname('imga') as TBlobField).SaveToStream(m_JpegStream);
m_JpegStream.Position:=0;
try
image2.Picture.Graphic:=nil;
image2.Picture.Graphic:=TJpegImage.Create;
image2.Picture.Graphic.LoadFromStream(m_JpegStream); //读Jpeg
except
Image2.Picture.Bitmap.LoadFromStream(m_JpegStream); //读Bmp
end;
finally
m_JpegStream.Free;
Query1.Close;
end;
end;


//BMP转换为JPG
procedure TStuXXSLForm.LoadImageBitBtnClick(Sender: TObject);
var
MyJpeg:TJpegImage;
begin
inherited;
if OpenPictureDialog1.Execute then
begin
FileName:=OpenPictureDialog1.FileName;
Image1.Picture.LoadFromFile(FileName);
if ExtractFileExt(FileName)='.Bmp' then
begin
MyJpeg:= TJpegImage.Create;
MyJpeg.Assign(Image1.Picture.Bitmap);
FileName:='Photo.Jpg';
MyJpeg.SaveToFile(FileName);
MyJpeg.Free;
end;
end;
end;

//保存jpg到数据库中

procedure TFORM1.DATASOUSE1DataChange(Sender: TObject; Field: TField);
Var MyMs : TMemoryStream;
Myjpg : TJpegImage;
begin
MyMs:=TMemoryStream.Create;
Myjpg:=Tjpegimage.Create;
If Not TABLE1photo.isNull Then
Begin
TABLE1photo.SaveToStream(MyMs);
MyMs.Seek(0,0);
Myjpg.LoadFromStream(MyMs);
Image1.Picture.Assign(Myjpg); //使用IMAGE而不是DBIMAGE
End
Else
Begin
Image1.Picture.Assign(Nil);
End;
MyMs.Free;
Myjpg.Free;
end;
 
真是谢谢各位了,只是我的问题还没有解决.
原来我用SYBASE库存储图片,测试时客户端和数据库在同一台机器上,用的就是
SYBASE提供的存储过程,用此代码执行一切正常,我刚才用xiehe老兄的读了一下库读至
第四条时出现JPEG #25错误,但用XP_WRITE_FILE读时无误,不知是什么原因。
 
送分了!!!
 
多人接受答案了。
 
后退
顶部