如何在Silverlight中保存图像
本文关键字:保存 图像 Silverlight | 更新日期: 2023-09-27 17:52:52
嗨,我已经创建了一个Silverlight应用程序,允许用户输入他们的名字,选择日期和签名他们的名字(签名条)。我正在寻找添加到我已经创建了一个网络表单。我使用silverlight中的borderInk和inkP工具在网格上构建签名条。然而,我不知道如何保存图像。我想把它存储在我已经创建的数据库中。我还想附加的silverlight应用程序的webforms我已经创建。有什么帮助吗?
您应该使用WCF服务并使用字节流将图像保存在服务器中。
下面是一个例子,
用silverlight WCF上传图片
你应该渲染你的绘图表面元素(网格)到位图,并保存结果。
示例方法,该方法应该获得一个元素并返回jpeg图像的字节
private byte[] RenderToJpeg(FrameworkElement element)
{
using (var stream = new MemoryStream())
{
var bmp = new WriteableBitmap(element, null);
bmp.SaveJpeg(stream, bmp.PixelWidth, bmp.PixelHeight, 0, 90);
stream.Flush();
return stream.ToArray();
}
}
如果您使用OpenFileDialog
保存图像,这可能会对您有所帮助。
decimal _imagementSize = 0;
string _imageName = "";
string _imageType = "";
Binary _image;
OpenFileDialog dialog=new OpenFileDialog();
private void btnSaveImage_Click(object sender, RoutedEventArgs e)
{
dialog.Multiselect = false;
dialog.Filter = "All Files | *.*";
if (dialog.ShowDialog() == true)
{
bool fileExist = dialog.File.Exists;
if (fileExist)
{
UploadFile();
}
}
}
private void UploadFile()
{
double fileLength = 0;
var stream = dialog.File.OpenRead();
var bnr = new BinaryReader(stream);
byte[] buffer = new byte[stream.Length + 1];
buffer = bnr.ReadBytes((int)stream.Length);
fileLength = stream.Length;
_imageName = dialog.File.Name;
_imageType = dialog.File.Extension;
_imageSize = (decimal)(fileLength / 1024);
_image = new Binary() { Bytes = buffer };
}
如果你使用WCF service
保存图像,你只需发送_image
和WCF method
like
[OperationContract]
public void SaveImage(System.Data.Linq.Binary _image)
{
//save image to DB or enything
}