Как я могу преобразовать растровое изображение в поток памяти?
У меня есть код в конструкторе 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.
Я получаю код ниже: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;
}
Работа для моей потребности