Je reçois l'image inversée en C #
Question
est mon code pour transformer un octet tableau [] en une image
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");
}
}
Et je reçois ceci:
texte alt http:////img11.imageshack.us/img11 /4853/testacr.png
Où est le problème dans le code, pourquoi cela se produit? Comment le retourner à la normale?
La solution
bmp.RotateFlip(RotateFlipType.Rotate180FlipX);
Correction du problème:)
Autres conseils
Hey il semble que les deux images que vous ne sont pas liés à posté de quelque façon (en plus un modèle similaire de faux-fuyants). Est-ce que vous postez les mauvais fichiers?
En ce qui concerne la question que vous voyez, je suppose que vous voyez un problème avec l'origine de l'axe x-y. Les images normales et les API graphiques utilisent un axe légèrement bizarre où l'on compte « vers le bas » l'axe y, c'est-à-dire le point (0, 0) est en haut à gauche de l'écran et que vous incrémenter y, vous descendez dans la écran. Par conséquent, il semble raisonnable de supposer que vous avez fait une erreur lors de la conversion ou que les deux images utilisent un système d'axe y différent.
Pourquoi ne pas remplacer tout ce genre de choses dangereuses avec:
private static Bitmap ConvertFromBytes(Byte[] imagebytes)
{
return new Bitmap(new MemoryStream(imagebytes));
}