【发布时间】:2013-11-20 23:38:58
【问题描述】:
问题说明了一切。我看过很多例子并用谷歌搜索了很多,但似乎没有任何效果。
这是我的代码:
System.Windows.Controls.Image abc = Image;
// SaveImageToJPEG(abc, "C:/1.jpg");
FindShape(new System.Drawing.Bitmap((Image.Source as BitmapImage).StreamSource));
该行:(Image.Source as BitmapImage) 返回null。
那么,如何从 System.windows.controls.Image 中获取位图?
这个问题与外面的所有问题都大不相同。我尝试了所有方法,但对我没有用。但最后我找到了解决方案。不幸的是,我无法将其发布为答案,因为 stackoverflow 的人们非常渴望将其关闭。 无论如何..这是答案:
System.Windows.Controls.Image abc = Image;
MemoryStream ms = null;
JpegBitmapEncoder jpegBitmapEncoder = null;
BitmapEncoder bencoder = new JpegBitmapEncoder();
System.Drawing.Bitmap bmp = null;
BitmapImage bitmapImage = new BitmapImage();
if ((int)abc.Source.Width>0)
{
RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap((int)abc.Source.Width,
(int)abc.Source.Height,
100, 100, PixelFormats.Default);
renderTargetBitmap.Render(abc);
jpegBitmapEncoder = new JpegBitmapEncoder();
//jpegBitmapEncoder.Frames.Add(BitmapFrame.Create(renderTargetBitmap));
bencoder.Frames.Add(BitmapFrame.Create(renderTargetBitmap));
using (ms = new MemoryStream())
{
bencoder.Save(ms);
//if (ms != null)
{
bmp = new System.Drawing.Bitmap(ms);
//bmp.Save("C:/bmp_thing.jpg");
if (bmp != null)
{
count++;
if(count ==60){
int shape_type =FindShape(bmp);
Tetris_Game.NextBlockType = shape_type;
count = 0;
}
// open_img.Dispose();
}
bmp.Dispose();
//ms.Flush();
}
}
}
【问题讨论】:
-
但该链接是针对 BitmapSource 的。如何将图像源转换为位图源? .我试过(Image.Source as BitmapSource)我得到一个错误
-
Source 从一开始就需要是一个 BitmapImage 以便您检索它。您是否将 Uri 设置为 Image.Source 并希望在下载后从中获取 BitmapImage?
-
我从 KinectDevice 获取图像...即从相机获取图像。我不知道它是什么格式。我所知道的是,来自相机的图像被分配给'System.Windows.Controls.Image'。
-
您可以在 WriteableBitmap 上绘制图像并从那里获取您的副本吗?
-
我该怎么做?我不知道该怎么做。我使用 C# 的次数不多。
标签: c# image-processing kinect