Ho l'immagine invertita in C #
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?
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));
}