c# socket 传输图片 转换成bitmap
时间: 2024-11-30 09:21:49 浏览: 3
C# 图片转换格式 (图像操作)
在 C# 中,使用 Socket 进行网络通信时,传输图片通常需要将图片数据先转换为字节流,然后在网络上传输,接收端再把接收到的数据解码成 Bitmap 对象。以下是基本步骤:
1. **发送端**:
- 使用 `FileStream` 或 `MemoryStream` 读取图片文件,例如:
```csharp
byte[] imageBytes = File.ReadAllBytes(@"path\to\image.jpg");
```
- 创建一个新的 `MemoryStream` 来存储图像数据:
```csharp
using (MemoryStream ms = new MemoryStream(imageBytes))
{
// 将数据添加到内存流
ms.Write(imageBytes, 0, imageBytes.Length);
// 创建套接字并连接到接收者
// ...
// 发送数据
NetworkStream ns = ...; // 获取Socket的NetworkStream
ns.Write(ms.ToArray(), 0, (int)ms.Length);
}
```
2. **接收端**:
- 建立好接收连接后,接收数据并将其存储到新的 `MemoryStream` 中:
```csharp
byte[] imageDataReceived = new byte[receivedLength];
int receivedCount = await ns.ReadAsync(imageDataReceived, 0, receivedLength);
MemoryStream receivedImageMs = new MemoryStream(imageDataReceived, 0, receivedCount);
```
- 解码 `MemoryStream` 到 Bitmap 对象:
```csharp
using (Bitmap bitmap = new Bitmap(receivedImageMs))
{
// 现在可以对Bitmap进行处理...
}
```
- 最后别忘了关闭流和释放资源。
阅读全文