Создать Bitmap из части двоичного файла - C#
Формулировка задачи:
Есть двоичный файл. Он открыт через BinaryReader. Оттуда прочитаны некоторые данные. Далее необходимо выковырять из этого двоичного файла картинку, проделать некоторые манипуляции с ней и сохранить её на диск.
Картинка должна хранится в Bitmap. У Bitmap есть такой вот конструктор: Bitmap(Int32 W, Int32 H, Int32 stride, PixelFormat pxfrm, IntPtr ptr).
Высота и ширина картинки есть, формат есть(png), stride можно посчитать из ширины и формата пикселей - не проблема. Осталась одна проблема - IntPtr.
Полазил в интернете - не нашел внятного объяснения. Хотелось бы что-то вроде "ptr = file.BaseStream.Position" или "ptr = &file".
Уже решил считать байты изображения из "file.256", сохранить их на диск и считать потом через конструктор Bitmap(string filename)...
Но хотелось бы не сохранять на диск, а считать напрямую в Bitmap.
Мой код:
string fileUrl = "D:\\files\\file.256"; BinaryReader file = new BinaryReader(new FileStream(fileUrl, FileMode.Open)); Int32 oneByte = file.ReadInt32(); ... Int32 W = 110, H = 115; //pic W & H Int64 Position = file.BaseStream.Position; //file position Int32 picSize = 0x1110; //pic size (bytes) //Bitmap img = new Bitmap(Int32 W, Int32 H, Int32 stride, PixelFormat pxfrm, IntPtr ptr) img.SetPixel(13,17,Color.Black); //кое-какие манипуляции с картинкой img.Save("D:\\fileout"); //pic save ... file.Close();
Решение задачи: «Создать Bitmap из части двоичного файла»
textual
Листинг программы
using (var ms = new MemoryStream(imageData)) { Bitmap bmp = new Bitmap(ms); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д