图片处理与绑定
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:Visual Studio 2015
作者:朱海恩
撰写时间:2019年6月10日
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
服务端的图片处理:根据图片名称提取文件夹中对应的图片。并不是提取所有的图片,而是提取对应的那张图片,而对应的那张图片名称有保存在表格里面,所以在方法中有一个变量(strFileName)接收图片的名称。
第一步:因为图片放在一个文件夹里面的,所以要获取文件夹,这里的文件夹比较特殊,它放在服务端里,所以要获取服务器部署路经:
string strPath=AppDomain.CurrentDomain.BaseDirectory+ "image\\";
获取到路径后,要对获取到的路径进行判断,判断文件夹路径是否存在,如果路径不存在,就创建文件夹路径:
Directory.CreateDirectory(strPath);
第二步:判断传递过来的图片名称是否为空,如果不等于空, 就获取图片路径并且进行判断。
最后一步:返回路径
服务端代码:
[OperationContract]
public string btn_Select_UC_StaffPhoro(string strFileName)
{
try
{
string strPhotoLuJing = null;//接收文件返回路径
//(1)获取服务器部署路径
string strPath=AppDomain.CurrentDomain.BaseDirectory+ "image\\";
//第一步:判断文件夹是否存在
if (!Directory.Exists(strPath))
{
//路径不存在:创建文件路径
Directory.CreateDirectory(strPath);
}
//(0)判断传递过来的图片名称是否为空
if (strFileName != null)
{
//获取图片路径
string strEndPath = strPath + strFileName;
if (strEndPath != "")
{
//找到文件
strPhotoLuJing = strEndPath;
}
else
{
//找不到文件返回null
strPhotoLuJing = null;
}
}
return strPhotoLuJing;
}
catch (Exception)
{
return null;
}
}
C#编程步骤:
第一步:提取选中行的单元格(图片路径)
第二步:获取路径,所以要声明一个字符串来接收服务器传递过来的路径
第三步:判断路径是否为空,如果不为空,就绑定图片(因为判断的图片是流,所以要注意流的开始和关闭),如果为空就返回null
C#代码:
if ((DataRowView)dgvstaff.CurrentItem != null)
{
//获取图片
string strLuJing = (((DataRowView)dgvstaff.CurrentItem).Row["picture"]).ToString();
myPictureByte = myStaffClient.btn_Select_UC_StaffPhoro(strLuJing);
if (myPictureByte != null)
{
//绑定图片
BitmapImage bi = new BitmapImage();
bi.BeginInit();
//增加这一行(指定位图图像如何利用内存缓存=在加载时将整个图像缓存到内存中。对图像数据的所有请求将通过内存存储区进行填充。)
bi.CacheOption = BitmapCacheOption.OnLoad;
bi.UriSource = new Uri(myPictureByte);
bi.EndInit();
//获取内存图片
img_picture.Source = bi;
}
else
{
img_picture.Source = null;
}
}
效果图如下: