【问题标题】:how to get directly bitmap image from inkcanvas (in wpf)如何从inkcanvas(在wpf中)直接获取位图图像
【发布时间】:2011-07-29 10:34:01
【问题描述】:

我正在做一个 OCR 项目。我必须从 inkcanvas 中的输入中获取图像以进行下一步处理,即将该图像转换为二维数组。

我对如何从inkcanvas 获取位图图像进行处理感到困惑。我一直在从许多来源寻找解决方案,但其中很多只是将 inkcanvas 保存到文件流中。

请帮助我! 非常感谢

【问题讨论】:

标签: c# wpf ocr inkcanvas


【解决方案1】:

查看这篇博文: http://www.centrolutions.com/Blog/post/2008/12/09/Convert-WPF-InkCanvas-to-Bitmap.aspx

这将为您提供位图的字节数组,因为您正在执行 OCR,这应该足够了。

【讨论】:

    【解决方案2】:

    我知道这个问题比较老,但我还必须从墨水画布中获取位图。因此,要回答有关如何直接从墨水画布中获取位图的问题,这里有一个解决方案。希望它仍然有帮助。

        private System.Drawing.Image ConvertInkCanvasToImage()
        {
    
          //create temporary InkCanvas or send it in as a parameter
          InkCanvas inkCanvas = new InkCanvas();      
          inkCanvas = viewModel.InkCanvas;
    
          //render bitmap
          RenderTargetBitmap rtb = new RenderTargetBitmap((int)inkCanvas.ActualWidth, (int)inkCanvas.ActualHeight, 96, 96, System.Windows.Media.PixelFormats.Default);
          rtb.Render(inkCanvas);
          BmpBitmapEncoder encoder = new BmpBitmapEncoder();
          encoder.Frames.Add(BitmapFrame.Create(rtb));
          rtb.Render(inkCanvas);
    
          //save to memory stream or file 
          System.IO.MemoryStream ms = new System.IO.MemoryStream();
          encoder.Save(ms);  
    
          //creat bitmap with memory stream or file
          Bitmap bitmap = new Bitmap(ms);
          return bitmap;
        }
    

    【讨论】:

    • 如果您需要将图像复制到剪贴板,那么在将其保存到内存流后,您必须从内存流中创建一个位图并将其复制到剪贴板,如下所示:@987654322 @
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多