(500分回报)高手请进,关于postgresql的blob型字段的问题 服务器式linux、postgresql 其中有一个oid字段存储图片我用的lo_import和lo_export存取图片,但是这样的话要求图片文件在服务器本地请问有什么办法能在客户端直接访问oid字段? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 foreveryday007(有無數種方法可以浪費一天的時間…但):改为text有没有长度限制?另外,能否告诉我怎么用text存图片?用base64编码行不行?能否给我个例子,谢了!!! dudunono(白金之星):我用的是postgresql数据库,没有image字段啊靠,要是sql server不就早搞定了大家帮我up啊,我快急疯了 改为text有没有长度限制?我這邊測試應該沒有甚麼大的限制主要就是用流來處理,用base64编码行啊 就是它代碼有點亂,你整理一下吧//存 with table1 do begin Append; FieldByName('imageno').asinteger:=imageno; myMemoField := (FieldByName('binimage')) as TmemoField; TempMStream1 := TMemoryStream.Create; TempMStream2 := TMemoryStream.Create; TempMStream1.Seek(0,soFromBeginning); TempMStream2.Seek(0,soFromBeginning); Jpegs:=TJpegImage.Create; Jpegs.Assign(Im.Picture.Bitmap); Jpegs.CompressionQuality:=100; Jpegs.Compress ; Jpegs.SaveToStream(TempMStream1); TempMStream1.Seek(0,soFromBeginning); MimeEncodeStream(TempMStream1,TempMStream2); TempMStream2.Seek(0,soFromBeginning); myMemoField.LoadFromStream(TempMStream2); Post;//取 with QTmp do begin Close; Sql.Clear; Sql.Add('select binimage from tbimage where imageno=:imageno '); ParamByName('imageno').asinteger:=iImageno; Open; if not eof then begin TempMStream1 := TMemoryStream.Create; TempMStream2 := TMemoryStream.Create; try myMemoField := (FieldByName('binimage')) as TmemoField; myMemoField.SaveToStream(TempMStream1); TempMStream1.Seek(0,soFromBeginning); TempMStream2.Seek(0,soFromBeginning); MimeDecodeStream(TempMStream1,TempMStream2); TempMStream2.Seek(0,soFromBeginning); MyJpeg:=TJpegImage.Create; MyJpeg.LoadFromStream(TempMStream2); MyBitMap:= TBitMap.Create; if MyJpeg.PixelFormat = jf24bit then MyBitMap.PixelFormat := pf24bit else MyBitMap.PixelFormat := pf8bit; MyBitMap.Width := MyJpeg.Width; MyBitMap.Height:= MyJpeg.Height; MyBitMap.Canvas.Draw(0,0,MyJpeg); TmpImage.Picture.Bitmap := MyBitMap; finally TempMStream1.Free; TempMStream2.free; MyJpeg.Free; MyBitMap.Free; end; END else begin TmpImage.Picture.Bitmap := nil; IM.picture.Metafile; end; END; foreveryday007(有無數種方法可以浪費一天的時間…但是…) : 我说过,用的postgresql数据库啊,你的代码肯定不行 我发现text最大长度是8910字节,唉,也不知道是为什么 用text我自己已经解决了,但是怎么才能直接用大对象呢? ShowModal后的窗体无法响应FormKeyDown事件 下载了TurboDelphi,怎样注册啊? 有空进来看看-句柄问题 急,寻找组件!!!! 依照超级猛料中的反查拼音码的方法,得到了 ''@ 这样的结果,程序如下,请问是何原因。 一个报表中格式转换问题,比较麻烦,要求有效率的方法???高分 sdgdfsg DrawText 函数 的使用! 怎么把一个sql语句中的表名提出来 Delphi 指针问题,请大家帮忙! StringGrid 的滚动条 像 AND OR 那样的查询是怎么做的?
我這邊測試應該沒有甚麼大的限制
主要就是用流來處理,用base64编码行啊 就是它
代碼有點亂,你整理一下吧//存
with table1 do
begin
Append;
FieldByName('imageno').asinteger:=imageno;
myMemoField := (FieldByName('binimage')) as TmemoField;
TempMStream1 := TMemoryStream.Create;
TempMStream2 := TMemoryStream.Create;
TempMStream1.Seek(0,soFromBeginning);
TempMStream2.Seek(0,soFromBeginning);
Jpegs:=TJpegImage.Create;
Jpegs.Assign(Im.Picture.Bitmap);
Jpegs.CompressionQuality:=100;
Jpegs.Compress ;
Jpegs.SaveToStream(TempMStream1);
TempMStream1.Seek(0,soFromBeginning);
MimeEncodeStream(TempMStream1,TempMStream2);
TempMStream2.Seek(0,soFromBeginning);
myMemoField.LoadFromStream(TempMStream2);
Post;//取
with QTmp do
begin
Close;
Sql.Clear;
Sql.Add('select binimage from tbimage where imageno=:imageno ');
ParamByName('imageno').asinteger:=iImageno;
Open;
if not eof then
begin
TempMStream1 := TMemoryStream.Create;
TempMStream2 := TMemoryStream.Create;
try
myMemoField := (FieldByName('binimage')) as TmemoField;
myMemoField.SaveToStream(TempMStream1);
TempMStream1.Seek(0,soFromBeginning);
TempMStream2.Seek(0,soFromBeginning);
MimeDecodeStream(TempMStream1,TempMStream2);
TempMStream2.Seek(0,soFromBeginning);
MyJpeg:=TJpegImage.Create;
MyJpeg.LoadFromStream(TempMStream2);
MyBitMap:= TBitMap.Create;
if MyJpeg.PixelFormat = jf24bit then
MyBitMap.PixelFormat := pf24bit
else
MyBitMap.PixelFormat := pf8bit;
MyBitMap.Width := MyJpeg.Width;
MyBitMap.Height:= MyJpeg.Height;
MyBitMap.Canvas.Draw(0,0,MyJpeg);
TmpImage.Picture.Bitmap := MyBitMap;
finally
TempMStream1.Free;
TempMStream2.free;
MyJpeg.Free;
MyBitMap.Free;
end;
END
else
begin
TmpImage.Picture.Bitmap := nil;
IM.picture.Metafile;
end;
END;
我说过,用的postgresql数据库啊,你的代码肯定不行