Silverlight将图片转换为byte的实现代码
作者:mdxy-dxy 发布时间:2022-03-07 11:07:15
最近总是有人问如何通过Silverlight上传图片并保存的后台服务器?众所周知,Silverlight是客户端程序,不能很好与服务器进行“沟通”,上传图片的方法呢大致都是通过以下流程:
1、客户端获取图片-->2、转换能够传输的数据-->3、传递数据到服务端-->4、服务端还原数据为图片
第一步和第四步没有问题,问题大多出在第二步和第三步,如何得到客户端和服务端都能识别并且容易传递的数据呢?
如果你使用的客户端和服务端都是.NET方案,这就非常好办,可以通过下面的方法:
1、客户端得到客户选择的FileInfo,然后通过WebClient方法post到服务端,服务端再还原成图片即可,详细文章https://www.jb51.net/article/74520.htm
2、客户端将客户选择的图片文件转换成FileStream包裹在一个类中通过WCF传递到服务端,服务端再还原,详细文章https://www.jb51.net/article/74523.htm
有些同学会抓耳挠腮的问,难道就没有人用silverlight传递到类似JAVA,PHP的情况吗?当然有,而且我最近碰到的都是这类似的情况,事先声明我不是实在不了解JAVA和PHP,我只能将图片转换成byte给你,至于你怎么还原,我只能说:”同学,任重而道远!“,不废话了,下面见分析:
之前走了不少弯路,总是想着将WriteableBitmap转换成byte(也不知道是谁上来就让用WriteableBitmap转,T_T),后来我才发现其实完全没必要这么麻烦,直接上代码:
byte[] staticByte;//全局byte,为将byte转换为Image
private void OpenImage()
{
OpenFileDialog imageFile = new OpenFileDialog()
{
Filter = "Jpeg Files (*.jpg)|*.jpg|All Files(*.*)|*.*"
};
if (imageFile.ShowDialog() == true)
{
System.IO.Stream fileStream=imageFile.File.OpenRead();
byte[] imageByte=new byte[fileStream.Length];//设置byte的长度为文件流的长度
fileStream.Read(imageByte,0,imageByte.Length);//将文件流信息读取到byte数组中
staticByte = imageByte;//将读取好的byte数组保存到全局
byteTextBox.Text=UTF8Encoding.UTF8.GetString(imageByte,0,imageByte.Length);//将byte数组显示到前台
}
}
直接通过FileStream.Read方法将文件流转换成byte,ok完工!
后面我加了一点代码将byte又转换成图片,代码如下:
private void button1_Click(object sender, RoutedEventArgs e)
{
OpenImage();
MemoryStream memoryStream = new MemoryStream(staticByte,0,staticByte.Length);//将byte转换为内存流
BitmapImage img = new BitmapImage();
img.SetSource(memoryStream);//设置BitmapImage的源为内存流
this.image1.Source = img;//显示图片
}
程序图片
选择图片界面
效果界面
程序源码
使用vs2010 sp1+silverlight5编写,SilverlightImageToByte
猜你喜欢
- 在ios7中,苹果的原生态应用几乎都能够通过向右滑动来返回到前一个页面,这样可以避免用户在单手操作时用大拇指去点击那个遥远的返回键(ipho
- 该方法把该字符串转换成一个新的字符数组。 String str="abcdefg"; char a[]; a=str.t
- 刚刚接触Java不久,写法上和一些术语还不是很熟悉,如有不对的地方,希望指正。本次学生成绩系统要求能实现成绩录入, * ,绩点计算,退出系
- 俗话说没有规矩就没有方圆,java作为一门严谨的面向对象的高级编程语言,自然对权限整个重要的问题有严格的控制。Java中,可以通过一些Jav
- 过滤器实现过滤器需要实现 javax.servlet.Filter 接口。重写三个方法。其中 init()&n
- SpringBoot配置文件优先级前面SpringBoot基础有提到,关于SpringBoot配置文件可以是properties或者是yam
- 问题描述今天在给SpringBoot项目配置 * 的时候发现怎么都进不到 * 的方法里面,在搜索引擎上看了无数篇关于配置 * 的文章都没有找
- 前言最近在学习spring,抽空会将学习的知识总结下面,本文我们会接触spring 4的新功能:@Conditional注解。在之前的spr
- 一、背景TC 集群具有高可用架构,应用到集群是这样一个间接的关系:应用 -》事务分组 -》TC 集群,应用启动后所指定的事务分组不能变,可通
- 升级到grails 2.3.2之后,运行时报如下的异常:Exception in thread "main"Error
- 先要把word或ppt转换为pdf; 以pdf的格式展示,防止文件拷贝。转换方法1、安装Word、Excel、PowerPoint组件注意:
- 一般我们在controller层调用service时,只需要使用@Autowired注解即可,例如如下代码我们经常看到:@RestContr
- 实现Struts登录1、jar包拷贝首先是建立java web项目,之后打开我们我们下载好strtus框架,Struts-1.2.9-bin
- PDF文件包(Portfolio)允许用户将多种不同类型的文件如Word、Excel、PDF、PowerPoint和图片等集合到一个PDF文
- 本文以Java程序代码为例展示如何通过格式转换的方式将PPT幻灯片文档转为HTML文件。这里的PPT幻灯片可以是.ppt/.pptx/.pp
- 简述Java中Socket分为普通Socket和NioSocket两种,这里介绍Socket。我们可以把Socket比作两个城市间的交通工具
- 转发和重定向相同点都是web开发中资源跳转的方式。不同点转发:是服务器内部的跳转,浏览器的地址栏不会发生变化。从一个页面到另一个页面的跳转还
- 本文实例讲述了Java Socket实现单线程通信的方法。分享给大家供大家参考,具体如下:现在做Java直接使用Socket的情况是越来越少
- 方式一:在gradle.properties中写入:#测试环境ENV_TEST=test#开发环境ENV_DEV=dev#生产环境ENV_O
- 1.Lombok是什么Lombok是使用java编写的一款开源类库。其主作用是使用注解来代替一些具有格式固定,没有过多技术含量的编码工作。使