在C#编程中,处理图像数据时经常需要将图片与字节流进行转换。这是因为字节流是一种通用的数据表示方式,适用于在网络传输、数据库存储等场景。本文将详细讲解如何在C#中实现图片和字节流之间的转换,并展示如何将字节流显示到Web页面上。 我们来看如何将图片转换成字节流。这个过程通常涉及以下步骤: 1. 创建一个`MemoryStream`对象,用于存储字节流。 2. 使用`Image`对象的`Save`方法,将图片保存到`MemoryStream`中。在这个例子中,我们选择了JPEG格式,但也可以选择其他如PNG或GIF等格式。 3. 调用`MemoryStream`的`GetBuffer`方法获取字节流数组。 以下是实现这个功能的代码片段: ```csharp public static byte[] ImgToByt(Image img) { using (MemoryStream ms = new MemoryStream()) { img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); return ms.GetBuffer(); } } ``` 接着,我们将字节流转换回图片。这里的关键是使用`Image`类的静态方法`FromStream`,它可以从给定的流中创建一个新的`Image`对象: ```csharp public static Image BytToImg(byte[] byt) { using (MemoryStream ms = new MemoryStream(byt)) { return Image.FromStream(ms); } } ``` 此外,如果你有一个图片的本地文件路径,你可以通过以下方式获取该图片的字节流: ```csharp private static byte[] getImageByte(string imagePath) { using (FileStream files = new FileStream(imagePath, FileMode.Open)) { byte[] imgByte = new byte[files.Length]; files.Read(imgByte, 0, imgByte.Length); return imgByte; } } ``` 当需要在Web页面上显示由字节流表示的图片时,可以有两种方法: 1. **直接在响应中写入字节流**:在ASP.NET中,可以使用`Response`对象的`ClearContent`、`ContentType`和`BinaryWrite`方法来实现。例如: ```csharp byte[] result; // 假设result已经包含图片的字节流 using (MemoryStream ms = new MemoryStream(result)) { Response.ClearContent(); Response.ContentType = "image/jpeg"; Response.BinaryWrite(ms.ToArray()); Response.End(); } ``` 2. **创建一个处理程序(Handler)**:定义一个`.ashx`处理程序,接收请求并返回图片的字节流。以下是一个简单的示例: ```csharp public class Handler : IHttpHandler { public void ProcessRequest(HttpContext context) { int CategoryID = int.Parse(context.Request.QueryString["CategoryID"]); Stream stream = GetPicture(CategoryID); // 获取图片流 if (stream != null) { int bufferSize = (int)stream.Length; byte[] buffer = new byte[bufferSize]; stream.Read(buffer, 0, bufferSize); context.Response.ContentType = "image/jpeg"; context.Response.BinaryWrite(buffer); } } // 其他方法和属性... } ``` 在这两种方法中,都要确保设置正确的`ContentType`,以便浏览器知道如何解析收到的数据。在上述示例中,我们使用了"image/jpeg",这意味着我们假设图片是JPEG格式的。如果图片是其他格式,如PNG或GIF,应相应地调整`ContentType`。 C#提供了一系列方便的方法来处理图像与字节流之间的转换,这在Web开发和其他需要处理图像数据的场景中非常实用。理解这些操作对于开发高效且适应性强的应用至关重要。
























- 粉丝: 8
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 2022软件技术的实习报告.docx
- HTC手机网络营销方案策划书.doc
- casio编程卵形曲线毕业论文.doc
- CAD制图过程中怎么绘制圆角矩形图形?.pdf
- 单片机课程设计报告范文.doc
- 2023年历年全国计算机二级ACCESS上机试题及答案.doc
- vue3-ts-cesium-map-show-Typescript资源
- 2023年C++二叉树的创建与遍历实验报告.doc
- D-PI-PID补偿网络(可编辑修改word版).docx
- dell无盘虚拟化方案桌面(可编辑修改word版).docx
- idcmmvdesignflow华为软件简要研发流程管理体系.docx
- GB_T_40843_2021_跨境电子商务_产品追溯信息共享指南.pdf
- PD208讲稿-GIS局放检测技术.ppt
- Go语言设计模式-goDesignPattern-实战源码-Go资源
- 报社广告业务管理系统网络版.doc
- XX公司产品原材料成本明细表(Excel表格通用模板).xls


