微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Silverlight中通过调用WebService来显示数据库中以流形式保存的图片

在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;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐