C#将图片和字节流互相转换并显示到页面上

 更新时间:2015年08月04日 17:44:51   投稿:mrr  
本文主要介绍用C#实现图片转换成字节流,字节流转换成图片,并根据图片路径返回图片的字节流,有需要的朋友可以参考下

图片转换成字节流先要转换的IMage对象,转换之后返回字节流。字节流转换成图片,要转换的字节流,转换得到的Image对象,根据图片路径返回图片的字节流,感兴趣的朋友看下下面的代码。

C#将图片和字节流相互转换代码:

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Drawing;
usingSystem.IO;
namespaceMicrosoft.Form.Base
{
classImageToByte
{
/// <summary>
/// 图片转换成字节流
/// </summary>
/// <param name="img">要转换的Image对象</param>
/// <returns>转换后返回的字节流</returns>
publicstaticbyte[] ImgToByt(Image img)
{
MemoryStream ms = newMemoryStream();
byte[] imagedata = null;
img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
imagedata = ms.GetBuffer();
returnimagedata;
}
/// <summary>
/// 字节流转换成图片
/// </summary>
/// <param name="byt">要转换的字节流</param>
/// <returns>转换得到的Image对象</returns>
publicstaticImage BytToImg(byte[] byt)
{
MemoryStream ms = newMemoryStream(byt);
Image img = Image.FromStream(ms);
returnimg;
}
//
/// <summary>
/// 根据图片路径返回图片的字节流byte[]
/// </summary>
/// <param name="imagePath">图片路径</param>
/// <returns>返回的字节流</returns>
privatestaticbyte[] getImageByte(stringimagePath)
{
FileStream files = newFileStream(imagePath, FileMode.Open);
byte[] imgByte = newbyte[files.Length];
files.Read(imgByte, 0, imgByte.Length);
files.Close();
returnimgByte;
}
}
}

将字节流转换为图片文件显示到页面上

//Byte[] result;
System.IO.MemoryStream ms =new MemoryStream(result, 0, result.Length) 
 Response.ClearContent();
 Response.ContentType = "image/Gif";
 Response.BinaryWrite(ms.ToArray());
或者添加一个处理图片的Handler,内容如下:
<%@ WebHandler Language="C#" Class="Handler" %>
using System.Web;
using System.IO;

public class Handler : IHttpHandler {
 public void ProcessRequest (HttpContext context) {
 int CategoryID = int.Parse(context.Request.QueryString["CategoryID"]);
 //调用Categories.GetPicture取得图片stream
 Stream stream = CategoriesPicture.GetPicture(CategoryID);
 if (stream !=null) {
 //取得图片stream大小
 int buffersize = (int)stream.Length;
 //建立buffer
 System.Byte[] buffer = new System.Byte[buffersize ] ;
 //调用stream.Read,从stream读取到buffer,并返回count
 int count = stream.Read(buffer, 0, buffersize);
 //返回图片字段buffer
 if (count!=0)
 context.Response.OutputStream.Write(buffer, 0, count);
 }
 }
 public bool IsReusable {
 get {
 return false;
 }
 }
}

以上就是本文的全部内容,希望对大家学习C#将图片和字节流互相转换并显示到页面上有所帮助。

相关文章

  • C#图形编程GDI+基础介绍

    C#图形编程GDI+基础介绍

    这篇文章介绍了C#中的图形编程GDI+,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-02-02
  • C# SQLite执行效率的优化教程

    C# SQLite执行效率的优化教程

    这篇文章主要给大家介绍了关于C# SQLite执行效率优化的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C# SQLite具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-06-06
  • C#双缓冲实现方法(可防止闪屏)

    C#双缓冲实现方法(可防止闪屏)

    这篇文章主要介绍了C#双缓冲实现方法,结合实例形式分析了C#双缓冲的具体步骤与相关技巧,可实现防止闪屏的功能,需要的朋友可以参考下
    2016-02-02
  • c# BackgroundWorker组件的作用

    c# BackgroundWorker组件的作用

    这篇文章主要介绍了c# BackgroundWorker组件的作用,帮助大家更好的理解和使用c#编程语言,感兴趣的朋友可以了解下
    2020-12-12
  • WPF应用程序本地化的最佳方法分享

    WPF应用程序本地化的最佳方法分享

    应用程序本地化有很多种方式,选择合适的才是最好的,这篇文章主要为大家介绍了动态资源的方式,可以在不重启应用程序的情况下进行资源的切换,需要的可以参考下
    2023-08-08
  • 详解WPF如何使用必应地图控件

    详解WPF如何使用必应地图控件

    这篇文章主要为大家详细介绍了WPF如何使用必应地图控件,文中的示例代码讲解详细,对我们学习或工作有一定帮助,感兴趣的小伙伴可以了解一下
    2022-11-11
  • C#中Attribute特性的用法

    C#中Attribute特性的用法

    这篇文章介绍了C#中Attribute特性的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • 基于Avalonia实现自定义弹窗的示例详解

    基于Avalonia实现自定义弹窗的示例详解

    对于使用avalonia的时候某些功能需要到一些提示,比如异常或者成功都需要对用户进行提示,所以需要单独实现弹窗功能,并且可以自定义内部组件,这一期将手动实现一个简单的小弹窗,并且很容易自定义,希望大家喜欢
    2023-02-02
  • C#访问SQLServer增删改查代码实例

    C#访问SQLServer增删改查代码实例

    这篇文章主要为大家详细介绍了C#访问SQLServer增删改查代码实例,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • C#实现飞行棋(Winform)

    C#实现飞行棋(Winform)

    这篇文章主要为大家详细介绍了基于Winform框架的飞行棋,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02

最新评论