Domanda

Questo è il mio codice di girare un array di byte [] in un'immagine

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

E ottengo questo:

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

Dove è il problema nel codice, perché ciò accade? Come sfogliare di nuovo al normale?

È stato utile?

Soluzione

   bmp.RotateFlip(RotateFlipType.Rotate180FlipX);

Risolto il problema:)

Altri suggerimenti

Hey sembra che le due immagini in cui hai postato non sono legate in alcun modo (oltre a avere un modello simile di offuscamento). Hai pubblicare il file sbagliato?

Per quanto riguarda il problema che si sta vedendo, direi che si sta vedendo un problema con l'origine degli assi x-y. immagini normali e grafica API utilizzano un asse un po 'strano in cui si conta l'asse y "verso il basso", vale a dire, il punto (0, 0) è in alto a sinistra dello schermo e come si incrementa y, si va giù per la schermo. Pertanto sembra ragionevole supporre che aver fatto un errore nella conversione o che le due immagini utilizzano uno schema di asse y diverso.

Perché non sostituire tutta quella roba non sicuri con:

private static Bitmap ConvertFromBytes(Byte[] imagebytes)
{
   return new Bitmap(new MemoryStream(imagebytes));
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top