请看下面我的代码。
我想用可以转换成真实图像的数据创建一个字节数组。当我尝试运行这段代码时,我得到一个 argumentException。为了创建一个合法的字节数组来保存图像数据,我需要在 For 循环中做什么?我不想使用真实图像并将其转换为字节数组,我想创建一个随机数形式的图像。
Random Rnd = new Random(); public MainWindow() { InitializeComponent(); } private void Button_Click_1(object sender, RoutedEventArgs e) { Byte[] ByteArray = new Byte[1000]; for (int i = 0; i < 1000; i++) { ByteArray[i] = Convert.ToByte(Rnd.Next(9)); } ImageConverter Convertor = new ImageConverter(); BitmapImage image = (BitmapImage)Convertor.ConvertFrom(ByteArray); MyImage.Source = image; }
请注意,我不想使用 WinForms 类型或库,如 system.drawing/bitmap - 我只想使用 WPF 技术。
最佳答案
这就是您正在寻找的解决方案,仅使用 WPF 技术。
请注意,步幅参数计算中使用的常量值 16 直接来自于我使用的是 16 位像素格式。
private void Button_Click_1(object sender, RoutedEventArgs e)
{
Random rnd = new Random();
Byte[] ByteArray = new Byte[(int)MyImage.Width * (int)MyImage.Height * 3];
rnd.NextBytes(ByteArray);
var image = BitmapSource.Create((int) MyImage.Width, (int) MyImage.Height, 72, 72,
PixelFormats.Bgr565, null, ByteArray, (4*((int)MyImage.Width * 16 + 31)/32));
MyImage.Source = image;
}
关于c# - 如何创建包含真实图像的字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20981467/