Как хранить System.Windows.Controls.Image на локальный диск - PullRequest
3 голосов
/ 01 декабря 2009

Как я могу сохранить System.Windows.Controls.Image на диск, скажем, по адресу: C: \ data \ 1.jpg Спасибо

Ответы [ 3 ]

3 голосов
/ 01 декабря 2009

Может быть, попробовать что-то в этом роде:

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.

0 голосов
/ 13 декабря 2009

Вопрос до сих пор остается без ответа, поэтому я перефразирую приведенный выше пример:

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;
}

Оттуда вы можете использовать один из методов Save (), предоставляемых классом System.Drawing.Image.

0 голосов
/ 01 декабря 2009

Немецкий, но есть код для преобразования FrameworkElement в System.Drawing.Image, который можно легко сохранить. Ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...