У меня есть этот код (C#):Изменить формат неуправляемого изображения байтового массива
unsafe private Bitmap Test()
{
Bitmap test = null;
byte[] data = memRenderAll.CurrentData;
fixed (byte* m_pBuffer = _data)
{
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
Bitmap a = new Bitmap(720, 576, 2160, System.Drawing.Imaging.PixelFormat.Format24bppRgb, new IntPtr(m_pBuffer));
a.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
test =(Bitmap) Image.FromStream(ms);
a.Dispose();
}
}
return _test;
}
Спасая поток, как это:
a.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
Я получаю 10: уменьшение 1 является размером.
Есть ли способ избежать этого:
a.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
и указать его где-нибудь/как-то:
Bitmap a = new Bitmap(720, 576, 2160, System.Drawing.Imaging.PixelFormat.Format24bppRgb, new IntPtr(m_pBuffer));
, как я хотел бы создать битмап только один раз.
спасибо,
Эндрю
Не используйте символы подчеркивания (или 'm_') для префикса локальных имен переменных. Это не имеет никакого смысла и делает код более шумным. Это также сбивает с толку, поскольку такие префиксы традиционно обозначают поля частного класса. –
Это стандарт, который использует эта компания к сожалению. Но я согласен с u. Я поправлю его соответствующим образом (слишком долго работал над этим контрактом, я боюсь) :). –
@MarceloCantos Привет, я действительно собираюсь дать вам большие пальцы вверх для вашего комментария, это потряс меня из-за плохой привычки - спасибо –