Как я могу преобразовать растровое изображение в поток памяти?

У меня есть код в конструкторе form1:

ConvertedBmp = ConvertTo24(newest.FullName);

Функция ConvertTo24 является:

private static Bitmap ConvertTo24(string inputFileName)
        {
            sw = Stopwatch.StartNew();
            Bitmap bmpIn = (Bitmap)Bitmap.FromFile(inputFileName);
            Bitmap converted = new Bitmap(bmpIn.Width, bmpIn.Height, PixelFormat.Format24bppRgb);
            using (Graphics g = Graphics.FromImage(converted))
            {
                g.PageUnit = GraphicsUnit.Pixel;
                g.DrawImageUnscaled(bmpIn, 0, 0);
            }
            sw.Stop();
            return converted;
        }

Проблема в том, как я могу использовать ConvertedBmp в этой строке:

backTexture = TextureLoader.FromFile(D3Ddev, @"D:\test.bmp");

У TextureLoader есть некоторые свойства, и два из них: Fromfile, он получает устройство и строку или FromStream, и он получает устройство и поток.

У меня уже есть объект устройства, но как я могу использовать ConvertedBmp(тип Bitmap) с TextureLoader?

2 ответа

Решение

В растровом классе есть метод Save(), который принимает Stream (например, объект MemoryStream) и ImageFormat. После сохранения растрового изображения в MemoryStream вы можете использовать его с TextureLoader.

Метод Image.Save (Stream, ImageFormat)

Я получаю код ниже:http://www.java2s.com/example/csharp/system.drawing/bitmap-to-memory-stream.html

      public static MemoryStream ToMemoryStream(this Bitmap b)
        {
            MemoryStream ms = new MemoryStream();
            b.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
            return ms;
        }

Работа для моей потребности

Другие вопросы по тегам