Silverlight将图片转换为byte

前言

  又是好久没写博客了~~~,越来越懒,越来越没有目标了!

正文

  最近总是有人问如何通过Silverlight上传图片并保存的后台服务器?众所周知,Silverlight是客户端程序,不能很好与服务器进行“沟通”,上传图片的方法呢大致都是通过以下流程:

  1、客户端获取图片-->2、转换能够传输的数据-->3、传递数据到服务端-->4、服务端还原数据为图片

  第一步和第四步没有问题,问题大多出在第二步和第三步,如何得到客户端和服务端都能识别并且容易传递的数据呢?

  如果你使用的客户端和服务端都是.NET方案,这就非常好办,可以通过下面的方法:

  1、客户端得到客户选择的FileInfo,然后通过WebClient方法post到服务端,服务端再还原成图片即可,详细文章http://www.cnblogs.com/greatverve/archive/2010/07/02/silerlight-up-down.html

2、客户端将客户选择的图片文件转换成FileStream包裹在一个类中通过WCF传递到服务端,服务端再还原,详细文章http://www.cnblogs.com/gaoweipeng/archive/2009/09/13/1565409.html

  有些同学会抓耳挠腮的问,难道就没有人用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

  喜欢请推荐,转载请注明出处http://www.cnblogs.com/zdp06623/p/4079482.html

时间: 2024-10-13 11:19:50

Silverlight将图片转换为byte的相关文章

C#程序中将图片转换为byte数组,并将byte数组转换为图片

/// <summary> /// 将图片以二进制流 /// </summary> /// <param name="path"></param> /// <returns></returns> public byte[] SaveImage(String path) { FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); //

JAVA 将图片转换为Base64编码

这里使用的jar包是commons-codec-1.10.jar; 示例代码 1 import java.io.FileInputStream; 2 import java.io.FileOutputStream; 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.io.OutputStream; 6 7 import org.apache.commons.codec.binary.Base64;

怎么样有效的把图片转换为cad

制图工程师们在制图的过程中经常会需要把一些漂亮的图片转换成CAD格式,在绘图的时候使用,那么怎么把图片转换成为CAD才是最有效的呢? 迅捷CAD编辑器是一款专业的CAD编辑工作,软件支持CAD图纸浏览.编辑.转换等工作.这里我们同样可以使用迅捷CAD编辑器用图片转成CAD格式图纸. 步骤一,下载.安装迅捷CAD编辑器 请在浏览器中,在编辑框中输入迅捷CAD编辑器,点击进入软件官网(http://cad.xjpdf.com/),然后在官网点击"立即下载"按钮,将软件下载安装到电脑上. 步

16进制字符串转换为byte数组

/// <summary> /// 16进制字符转换为byte数组 /// </summary> /// <param name="hexString">偶数位,由16进制字符[0-9a-fA-F]组成</param> /// <returns>null为转换失败</returns> private byte[] HexStringToBytes(string hexString) { if (string.IsN

CircleImageManager ——将图片转换为圆形图片的类

package com.kale.utils; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PorterDuffXfermode; import android.g

开发路程(8):图片和byte[]的互相转换

1 //图片的"读"操作 2 //①参数是图片路径:返回Byte[]类型: 3 //参数是图片的路径 4 public byte[] GetPictureData(string imagePath){ 5 FileStream fs=new FileStream(imagePath,FileMode.Open); 6 byte[] byteData=new byte[fs.Length]; 7 fs.Read(byteData,0,byteData.Length); 8 fs.Clos

C#中使用Buffer.BlockCopy()方法将string转换为byte array的方法:

public static void BlockCopy(Array src, int srcOffset, Array dst, int dstOffset, int count); 将指定数目的字节从起始于特定偏移量的源数组复制到起始于特定偏移量的目标数组. /// <summary> /// C#中使用Buffer.BlockCopy()方法将string转换为byte array的方法 /// </summary> /// <param name="str&

PHP将Base64图片转换为本地图片并保存

本文出至:新太潮流网络博客 /** * [将Base64图片转换为本地图片并保存] * @E-mial [email protected] * @TIME 2017-04-07 * @WEB http://blog.iinu.com.cn * @param [Base64] $base64_image_content [要保存的Base64] * @param [目录] $path [要保存的路径] */ function base64_image_content($base64_image_c

Java 图片与byte数组互相转换

1 //图片到byte数组 2 public byte[] image2byte(String path){ 3 byte[] data = null; 4 FileImageInputStream input = null; 5 try { 6 input = new FileImageInputStream(new File(path)); 7 ByteArrayOutputStream output = new ByteArrayOutputStream(); 8 byte[] buf =