Frage

Das ist mein Code einen byte [] Array in ein Bild zu drehen

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");
  }
}

Und ich bekomme diese:

alt text http:////img11.imageshack.us/img11 /4853/testacr.png

Wo ist das Problem in dem Code, warum das passiert? Wie es leicht zu schlagen wieder normal?

War es hilfreich?

Lösung

   bmp.RotateFlip(RotateFlipType.Rotate180FlipX);

Das Problem wurde behoben:)

Andere Tipps

Hey es sieht aus wie die beiden Bilder, die Sie gebucht werden, in keiner Weise im Zusammenhang (neben einem ähnlichen Muster der Verschleierung haben). Haben Sie die falschen Dateien schreiben?

Im Hinblick auf die Frage, die Sie sehen, ich würde vermuten, ein Problem mit dem Ursprung der x-y-Achse sehen. Normale Bilder und Grafik-APIs eine etwas seltsame Achse verwenden, wo man „nach unten“, um der y-Achse zählen, das heißt, der Punkt (0, 0) in der oberen linken Ecke des Bildschirms und wie Sie y erhöhen, Sie gehen nach unten dem Bildschirm. Daher scheint es vernünftig anzunehmen, dass Sie einen Fehler bei der Konvertierung oder dass die beiden Bilder eines anderes y-Achse Schema verwendet gemacht haben.

Warum ersetzt nicht so unsicher Sachen mit:

private static Bitmap ConvertFromBytes(Byte[] imagebytes)
{
   return new Bitmap(new MemoryStream(imagebytes));
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top