HELP ME:把数据库中的图片读到Stream中,再赋给IMAGE控件时,怎么IMAGE控件中的图片全黑了。

liung 2002-05-07 06:36:11
把数据库中的图片读到Stream中,再赋给IMAGE控件,怎么IMAGE控件中的图片全黑了?源代码如下:
Clientdataset1.Active:=false;
Clientdataset1.CommandText :='SELECT * FROM Asx where bh=''0000001''';
Clientdataset1.Active:=true ;
str:=TStream.Create();
str:=c1.CreateBlobStream(Clientdataset1.fieldbyname('jxt'),bmRead);
image1.Picture.Bitmap.LoadFromStream(str);
str.Free;
...全文
87 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dudu320 2002-05-08
  • 打赏
  • 举报
回复
数据流的posion要重新设置为0
str.posion:=0;
短歌如风 2002-05-08
  • 打赏
  • 举报
回复
既然用TQuery可以而用TClientDataset不行,你试着换一种方法:
在服务端编写一个方法,返回指定记录的Blob字段(假设为GetBlob):
function MyServer.GetBlob(Key:KeyType):OleVariant;//KeyType改为正确的类型.
var
BlobField:TBlobField;
BlobStream:TStream;
PtrData:PByte;
begin
...
//取得正确的BlobField
BlobStream := TBlobStream.Create(BlobStream,bmRead);
Result := VarArrayCreate([0,BlobStream.Size-1],varByte);
PtrData := VarArrayLock(Result);
BlobStream.Read(PtrData^,BlobStream.Size);
BlobStream.Free;
VarArrayUnlock(Result);
0Aend;
在客户端读出来:
var
PtrData:PByte;
VarData:OleVariant;
MemStream:TStream;
...
VarData := RServer.AppServer.GetBlob(MyKeyData);
PtrData := VarArrayLock(VarData);
MemStream := TMemoryStream.Create;
MemStream.Write(PtrData^,VarArrayHighBound(VarData,1)+1);
VarArrayUnlock(VarData);
0A image1.Picture.Bitmap.LoadFromStream(MemStream);
MemStream.Free;

____ ____
\ p \ / g /
\ l \_/ n /
\ a o /
\ i s /
\ n /
\_/
goldtogo 2002-05-07
  • 打赏
  • 举报
回复
up
asdie 2002-05-07
  • 打赏
  • 举报
回复
up
liung 2002-05-07
  • 打赏
  • 举报
回复
TBlobStream,TMemorySstream,TStream都试过了,读出来的也都是黑的。
everydayniceday 2002-05-07
  • 打赏
  • 举报
回复
至少证明了一件事:数据库中的图片数据格式是有效的。
你可以试一试用TMemoryStream代替Tstream看一看。
liung 2002-05-07
  • 打赏
  • 举报
回复
是BMP格式的图片存在SQL SERVER数据库的BLOBField字段。因为我开发的是分布式多层应用系统,所以必须得用TClientDastSet控件,但用TClientDastSet控件从应用程序服务器中取出的图片是全是黑的。其实用用QUERY或TABLE取出的图片是正常的,只不过我不能用它们。
短歌如风 2002-05-07
  • 打赏
  • 举报
回复
你在数据库中存的是BMP格式吗?

____ ____
\ p \ / g /
\ l \_/ n /
\ a o /
\ i s /
\ n /
\_/
大家好,又见面了!EasyUI又更新了,这次更新内容还是不少的,具体内容请参考下面的更新说明,官方的更新说明还少了1条,我给补上了。 jQuery EasyUI 1.3.5版本更新内容: Bug(修复) searchbox:修复“searcher”函数提供的“name”参数值错误的问题; combo:修复“isValid”方法无法返回布尔值的问题; combo:修复点击页面某一个combo组件的下拉列表触发的“onHidePanel”事件会导致页面上其他combo组件的下拉列表被关闭的问题; combogrid:修复某些从combo组件继承来的方法无法使用的问题。 Improvement(改进) datagrid:改进检查行候的性能; menu:允许追加菜单分隔符; menu:新增“hideOnUnHover”属性用于在鼠标离开菜单的候指示是否需要隐藏菜单; slider:新增“clear”和“reset”方法; tabs:新增“unselect”方法、“onUnselect”事件; tabs:新增“selected”属性,用于指定的默认打开的面板; tabs:Tab Panel(Tab页)新增“collapsible”属性,用于设置是否允许摺叠面板; tabs:新增“showHeader”属性、“showHeader”方法和“hideHeader”方法; combobox:允许“disabled”属性禁用下拉列表选项; tree:改进数据加载候的性能; pagination:新增“layout”属性,用于自定义控件的样式布局; accordion:新增“unselect”方法、“onUnselect”事件; accordion:新增“select”和“multiple”属性; accordion:新增“getSelections”方法; datebox:新增“sharedCalendar”属性,允许多个datebox控件共享使用同一个calendar控件。 datebox:新增“buttons”属性,用于自定义日历下方的按钮。 (译者注:该点更新内容官方更新公告上没有注明,具体内容和用法请看datebox的API。) 历史版本: - jQuery EasyUI 1.3.4 离线API简体文版 http://download.csdn.net/detail/richie696/6302785 - jQuery EasyUI 1.3.4 离线API简体文版 http://download.csdn.net/detail/richie696/5363933

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧