在Web开发中,常见的做法如下:
将数据库中读取出来的内容以字节数组的形式存储,字符串型转字节数组的方法是Convert.FromBase64String,然后以二进制写的方法将图片信息写在页面中。主要代码如下:
SWDM dm = new SWDM();protected voID Page_Load(object sender,EventArgs e){ string strsql = "select picContent from tb_ssxq where OBJECTID=1"; DataSet ds = dm.getsql(strsql); byte[] bytefileStream = Convert.FromBase64String(ds.tables[0].Rows[0]["picContent"].ToString()); Response.BinaryWrite(bytefileStream); Response.End();}
在Silverlight中如何实现呢,其实差不多,只不过在WebService中的方法的返回值要是byte[]类型,然后在Silverlight中利用MemoryStream来接收并存储图片流信息,然后将其作为BitmAPImage的Source即可,最后利用Silverlight的Image控件即可显示出该图片。
WebService中的代码如下:
/// <summary> /// 根据险情ID获取实时险情的图片信息 /// </summary> /// <param name="paramCity"></param> /// <returns></returns> [WebMethod(Description = "获取某一个实时险情的图片信息")] public byte[] getSSXPictureQByID(string xqID) { byte[] bytefileStream = null; string strsql = "select picContent from tb_ssxq where OBJECTID=" + int.Parse(xqID); DataSet ds = dm2.getsql(strsql); bytefileStream = Convert.FromBase64String(ds.tables[0].Rows[0]["picContent"].ToString()); return bytefileStream; }
Silverlight中代码:
<GrID x:name="LayoutRoot" Background="White"> <border borderBrush="#FF5BB0FF" borderThickness="1" margin="0"> <Image x:name="Image1" margin="0" Stretch="None"/> </border></GrID>
private voID UserControl_Loaded(object sender,RoutedEventArgs e){ //获取险情图片信息 getPictureInfoSoapClIEnt clIEnt = new getPictureInfoSoapClIEnt(); clIEnt.getSSXPictureQByIDCompleted += new EventHandler<getSSXPictureQByIDCompletedEventArgs>(clIEnt_getSSXPictureQByIDCompleted); clIEnt.getSSXPictureQByIDAsync(ID);}//险情图片voID clIEnt_getSSXPictureQByIDCompleted(object sender,getSSXPictureQByIDCompletedEventArgs e){ MemoryStream ms = new MemoryStream(e.Result); BitmAPImage image = new BitmAPImage(); image.SetSource(ms); this.Image1.source = image;}总结
以上是内存溢出为你收集整理的Silverlight中通过调用WebService来显示数据库中以流形式保存的图片全部内容,希望文章能够帮你解决Silverlight中通过调用WebService来显示数据库中以流形式保存的图片所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)