Создать 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);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д