C# 如何将System.Windows.Controls.Image存储到本地磁盘

C# 如何将System.Windows.Controls.Image存储到本地磁盘,c#,wpf,image,C#,Wpf,Image,如何将System.Windows.Controls.Image存储到磁盘,例如存储位置:C:\data\1.jpg 谢谢德语,但是有代码可以将框架元素转换为System.Drawing.Image,可以轻松保存。 也许可以尝试类似于此方法的方法: private void SaveImageToJPEG(Image ImageToSave, string Location) { RenderTargetBitmap renderTargetBitmap

如何将System.Windows.Controls.Image存储到磁盘,例如存储位置:C:\data\1.jpg
谢谢

德语,但是有代码可以将框架元素转换为System.Drawing.Image,可以轻松保存。

也许可以尝试类似于此方法的方法:

private void SaveImageToJPEG(Image ImageToSave, string Location)
        {
            RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap((int)ImageToSave.Source.Width,
                                                                           (int)ImageToSave.Source.Height,
                                                                           100, 100, PixelFormats.Default);
            renderTargetBitmap.Render(ImageToSave);
            JpegBitmapEncoder jpegBitmapEncoder = new JpegBitmapEncoder();
            jpegBitmapEncoder.Frames.Add(BitmapFrame.Create(renderTargetBitmap));
            using (FileStream fileStream = new FileStream(Location, FileMode.Create))
            {
                jpegBitmapEncoder.Save(fileStream);
                fileStream.Flush();
                fileStream.Close();
            }
        }

您可能需要在RenderTargetBitmap中处理大小以获得所需内容,但这应该可以完成工作。您也可以使用不同的编码器,而不仅仅是JpegBitmapEncoder。

这个问题仍然没有答案,所以我将解释前面提供的示例:

public System.Drawing.Image ConvertControlsImageToDrawingImage(System.Windows.Controls.Image imageControl)
{
    RenderTargetBitmap rtb2 = new RenderTargetBitmap((int)imageControl.Width, (int)imageControl.Height, 90, 90, PixelFormats.Default);
    rtb2.Render(imageControl);

    PngBitmapEncoder png = new PngBitmapEncoder();
    png.Frames.Add(BitmapFrame.Create(rtb2));

    Stream ms = new MemoryStream();
    png.Save(ms);

    ms.Position = 0;

    System.Drawing.Image retImg = System.Drawing.Image.FromStream(ms);
    return retImg;
}

从这里,您可以使用System.Drawing.Image类提供的一个Save()方法。

这是一个很好的通用解决方案,但是从图像控件中获取图像可能比渲染整个控件更容易:)感觉太多了:)