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


猜你喜欢
- Hutool Java工具类库_ExcelUtil依赖<!--Hutool Java工具包--> &l
- 背景先上图由此可见,非自旋锁如果拿不到锁会把线程阻塞,直到被唤醒;自旋锁拿不到锁会一直尝试为什么要这样?好处阻塞和唤醒线程都是需要高昂的开销
- Unity中的PostProcessBuild:深入解析与实用案例在Unity游戏开发中,我们经常需要在构建完成后对生成的应用程序进行一些额
- 要说在 Spring Boot 中注册过滤器有三种方式,你都能想到哪些呢?今天松哥就来和大家聊一聊 Spring Boot 中注册过滤器的三
- 转成 Base64 形式的 System.String:string a = "base64字符串与普通字符串互转";
- 关于在spring 容器初始化 bean 和销毁前所做的操作定义方式有三种:第一种:通过注解@PostConstruct 和 @
- Mybatis基础回顾与高级应用数据库:mysql5.7jdk:15引入依赖<!--引入依赖--> &
- 发送邮件在web开发中,发送邮件是一个很常用的功能,Spring Boot也集成了发送邮件的功能基本使用使用Spring Boot的发送邮件
- 前言记得前段时间的文章么?redis使用位图法记录在线用户的状态,还是需要自己实现一个IM在线用户状态的记录,今天来讲讲另一方案,布隆过滤器
- 有些手机在电话接通后会有振动提示,这有个好处就是可以等到接通后再放到耳边接听,减少辐射。本文就讲讲如何在Android手机中实现这种接通电话
- JAVA是面向对象的语言,开发者在操作数据的时候,通常更习惯面对一个特定类型的对象,如一个用户就是一个User类的对象。DAO层需要做的,就
- 【漏洞通告】2月19日,NVD发布安全通告披露了jackson-databind由JNDI注入导致的远程代码执行漏洞(CVE-2020-88
- Spring的HandlerMapping支持 * , * 必须实现HandlerInterceptor接口,此接口里面有下面3中方法:1.
- HTTP 头处理HTTP 头是 HTTP 请求和响应中的重要组成部分。在创建 HTTP 请求时需要设置一些 HTTP 头。在得到 HTTP
- 本文实例为大家分享了java字符串和数字转换工具的具体代码,供大家参考,具体内容如下package com.test.util;/** *
- 1、String 是最基本的数据类型吗?不是。Java 中的基本数据类型只有 8 个 :byte、short、int、long、float、
- 这篇文章主要从以下几个方面来介绍。简单介绍下jersey,springboot,重点介绍如何整合springboot与jersey。什么是j
- 一、template下文件不允许直接访问1、查资料得知:springboot项目默认是不允许直接访问template下的文件的,是受保护的。
- 1. 定义TreeMap的排序方法使用Comparator对象作为参数需要注意的是:排序方法是针对键的,而不是值的。如果想针对值,需要更麻烦
- 本文实例讲述了C#使用webbrowser的常见用法。分享给大家供大家参考。具体如下:判断是否网络正常private bool IsConn