如何将System.Windows.Controls.Image存储到磁盘,例如位置:C:\ data \ 1.jpg 感谢
答案 0 :(得分:3)
也许尝试一下这种方法:
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。
答案 1 :(得分:0)
德语但有代码可以将FrameworkElement转换为System.Drawing.Image,可以轻松保存。 Link
答案 2 :(得分:0)
问题仍然没有答案,所以我会解释之前提供的例子:
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()方法。