C# 位图未将图像保存到内存流
这里需要一点帮助。我有一个应用程序,我正在创建的mergies两张照片在一起。问题是当我试图将位图转换为bitmpaimage以在屏幕上显示结果时。据我所知,图像没有保存到“NwImg.save(memory,ImageFormat.Jpeg);”的内存流中,有什么想法吗C# 位图未将图像保存到内存流,c#,memory,bitmap,stream,bitmapimage,C#,Memory,Bitmap,Stream,Bitmapimage,这里需要一点帮助。我有一个应用程序,我正在创建的mergies两张照片在一起。问题是当我试图将位图转换为bitmpaimage以在屏幕上显示结果时。据我所知,图像没有保存到“NwImg.save(memory,ImageFormat.Jpeg);”的内存流中,有什么想法吗 //The Code //bitmap to bitmapimage conversion using (MemoryStream memory = new MemoryStream()
//The Code
//bitmap to bitmapimage conversion
using (MemoryStream memory = new MemoryStream())
{//NwImg is type Bitmap, and at this point i checked properties and values did copy over from the merging
NwImg.Save(memory, ImageFormat.Jpeg);//here image NwImg.save is suppose to transfer to memory
memory.Position = 0;
Nwbi.StreamSource = memory;//memory stream is showing null
Nwbi.CacheOption = BitmapCacheOption.OnLoad;
}
我不知道这是否有问题,但NwImg表示一个位图,它是通过在jpeg上合并png图像创建的。我没有读到任何关于这件事的文章,但我想我会在那里读到的
///这是david要求的所有代码
//主c#
变量“memory”在执行该行时注释为“memory stream is showing null”的行上不可能为null,因为它肯定是在上面的“using”块4行中分配的。我猜您在方法中过早地设置了调试器断点。尝试将断点放在分配
Nwbi.CacheOption
的行上,看看调试器是否会告诉您所期望的内容。您需要更改一些内容,以便代码能够正常工作
using (MemoryStream memory = new MemoryStream())
{
NwImg.Save(memory, ImageFormat.Jpeg);
memory.Position = 0;
Nwbi = new BitmapImage();
Nwbi.BeginInit();
Nwbi.StreamSource = memory;
Nwbi.CacheOption = BitmapCacheOption.OnLoad;
Nwbi.EndInit();
}
//Save to current picture
Bitmap NewImage = new Bitmap(BottomImage.Width, BottomImage.Height, canvas);
return NewImage;
对此
return BottomImage;
由于您正在使用的位图类重载,因此不会基于图形对象创建新位图,而只是基于其分辨率(这将导致生成空图像)。因此,由于您绘制底部图像位图,因此只需返回该图像您可以发布合并图像的代码吗?在您的
apply\u单击,在创建位图之前,您不会倒带outStream
。这可能是个问题。另外,我怀疑如果您将行ResultPhoto.Source=Nwbi
在前面的中使用
块,事情将开始工作。只是猜测而已。我认为内存流是在实际加载图像之前被处理的。嘿,吉姆,“倒带”是什么?查看了msdn上的memorystream类,没有看到任何关于rewind的内容。我还跟踪了调试中的值,问题在using语句中,请参见上面的第一个代码块。“rewind”表示查找回文件的开头。将位置设置为0。这是一个常见的术语,当时计算机存储在磁带上,要想找到文件的开头,需要倒带磁带。它好像被卡住了。或者它最终从词典中消失了,“内存流显示为空”是什么意思?你是说如果你检查变量内存
,它会显示null
?那似乎。。。不太可能。请解释一下,它是空的。我第一次运行时没有中断,注意到图像没有更新,然后我在代码中向后运行了几次,此时我丢失了图像,Nwbi在使用Ank YOU SO DAVID之外显示null!!!!!它是有效的!!!!!我将不得不阅读更多关于图像的内容,我真的不知道从阅读库中可以看出graphic就是这么做的。再次感谢。
using (MemoryStream memory = new MemoryStream())
{
NwImg.Save(memory, ImageFormat.Jpeg);
memory.Position = 0;
Nwbi = new BitmapImage();
Nwbi.BeginInit();
Nwbi.StreamSource = memory;
Nwbi.CacheOption = BitmapCacheOption.OnLoad;
Nwbi.EndInit();
}
//Save to current picture
Bitmap NewImage = new Bitmap(BottomImage.Width, BottomImage.Height, canvas);
return NewImage;
return BottomImage;