Я получаю изображение в C # - PullRequest
2 голосов
/ 13 апреля 2009

это мой код для преобразования массива byte [] в изображение

unsafe
{
  //convert the UInt32[] into byte array and then assign the pointer to it
  fixed (byte* ptr = Misc.ConvertFromUInt32Array(image)) 
  {
    Bitmap bmp = new Bitmap(200,64,800,
      PixelFormat.Format32bppRgb,
      new IntPtr(ptr));
    bmp.Save("test.bmp");
  }
}

И я получаю это:

альтернативный текст http:////img11.imageshack.us/img11/4853/testacr.png

Где проблема в коде, почему это происходит? Как вернуть его в нормальное состояние?

Ответы [ 3 ]

7 голосов
/ 13 апреля 2009
   bmp.RotateFlip(RotateFlipType.Rotate180FlipX);

Исправлена ​​проблема:)

1 голос
/ 13 апреля 2009

Почему бы не заменить все эти небезопасные вещи на:

private static Bitmap ConvertFromBytes(Byte[] imagebytes)
{
   return new Bitmap(new MemoryStream(imagebytes));
}
1 голос
/ 13 апреля 2009

Эй, похоже, что вы разместили два изображения, которые никак не связаны (кроме того, имеют похожую картину запутывания). Вы разместили неправильные файлы?

Что касается проблемы, с которой вы сталкиваетесь, то я думаю, что вы видите проблему с началом оси x-y. Нормальные API для изображений и графики используют слегка странную ось, где вы считаете «вниз» по оси Y, то есть точка (0, 0) находится в верхнем левом углу экрана, и, увеличивая y, вы переходите вниз экран. Поэтому представляется разумным предположить, что вы допустили ошибку при преобразовании или что два изображения используют другую схему оси y.

...