WPF bitmap转byte
时间: 2023-07-05 13:16:56 浏览: 52
将一个WPF中的BitmapSource对象转换为byte[]数组,可以使用BitmapSource对象的CopyPixels方法来实现。
下面是一个示例代码,可以将一个BitmapSource对象转换为byte[]数组:
```csharp
BitmapSource bitmapSource = ...; // 从某个地方获取BitmapSource对象
int stride = (bitmapSource.PixelWidth * bitmapSource.Format.BitsPerPixel + 7) / 8; // 计算每行像素所占的字节数
byte[] pixels = new byte[bitmapSource.PixelHeight * stride]; // 创建byte[]数组
bitmapSource.CopyPixels(pixels, stride, 0); // 将BitmapSource对象的像素数据复制到byte[]数组中
```
在上面的代码中,stride表示每行像素所占的字节数,pixels是存储像素数据的byte[]数组。使用BitmapSource对象的CopyPixels方法可以将像素数据复制到byte[]数组中。
相关问题
WPF BitmapImage转byte[]
将一个WPF中的BitmapImage对象转换为byte[]数组,可以先将BitmapImage对象转换为BitmapSource对象,然后再使用BitmapSource对象的CopyPixels方法将像素数据复制到byte[]数组中。
下面是一个示例代码,可以将一个BitmapImage对象转换为byte[]数组:
```csharp
BitmapImage bitmapImage = ...; // 从某个地方获取BitmapImage对象
BitmapSource bitmapSource = new FormatConvertedBitmap(bitmapImage, PixelFormats.Bgra32, null, 0); // 将BitmapImage对象转换为BitmapSource对象
int stride = (bitmapSource.PixelWidth * bitmapSource.Format.BitsPerPixel + 7) / 8; // 计算每行像素所占的字节数
byte[] pixels = new byte[bitmapSource.PixelHeight * stride]; // 创建byte[]数组
bitmapSource.CopyPixels(pixels, stride, 0); // 将BitmapSource对象的像素数据复制到byte[]数组中
```
在上面的代码中,我们首先创建了一个FormatConvertedBitmap对象,将BitmapImage对象转换为BitmapSource对象。然后,我们计算每行像素所占的字节数,并创建一个byte[]数组来存储像素数据。最后,我们使用BitmapSource对象的CopyPixels方法将像素数据复制到byte[]数组中。
WPF BITIMAGEIMAGE转Byte[]
将 WPF 中的 BitmapImage 转换为 byte 数组,可以使用以下代码:
```csharp
public byte[] ConvertBitmapImageToByteArray(BitmapImage bitmapImage)
{
byte[] data;
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bitmapImage));
using (MemoryStream ms = new MemoryStream())
{
encoder.Save(ms);
data = ms.ToArray();
}
return data;
}
```
这个方法将 BitmapImage 对象转换为 JPEG 格式的 byte 数组。你可以在方法中更改编码器以转换为其他图像格式。例如,如果要转换为 PNG 格式,可以将 `JpegBitmapEncoder` 更改为 `PngBitmapEncoder`。