Comment faire pivoter l'image de x degrés en c#?

J'ai fait quelques recherches et je ne trouve aucune fonction c'est de faire ce que je whant il todo.

J'ai un fichier image d'un document numérisé avec le texte, mais le document est quelques degrés de rotation, donc je veux le faire pivoter le texte étant en ligne avec chaque autre.

Dans un monde parfait, sa doit être une fonction de faire cela automatiquement, mais je ne peux pas trouver quoi que ce soit et ce que je comprends de l'obtenir pour fonctionner automatiquement son besoin d'être certains d'analyser de l'image et je pense que c'est à grand chose todo.

Mais ensuite j'ai fait un outil pour faire pivoter l'image sur un site web à la main, mais maintenant j'ai besoin d'une fonction pour enregistrer la rotation vers le fichier image.

Ce qui semble être quelques différentes méthodes, mais pas de celui que j'ai testé de faire ce que je whant.

La fonction que j'ai trouvé qui fonctionne presque comme je whant est:

public static Bitmap RotateImg(Bitmap bmp, float angle, Color bkColor) {
int w = bmp.Width;
int h = bmp.Height;
PixelFormat pf = default(PixelFormat);
if (bkColor == Color.Transparent)
{
    pf = PixelFormat.Format32bppArgb;
}
else
{
    pf = bmp.PixelFormat;
}

Bitmap tempImg = new Bitmap(w, h, pf);
Graphics g = Graphics.FromImage(tempImg);
g.Clear(bkColor);
g.DrawImageUnscaled(bmp, 1, 1);
g.Dispose();

GraphicsPath path = new GraphicsPath();
path.AddRectangle(new RectangleF(0f, 0f, w, h));
Matrix mtrx = new Matrix();
//Using System.Drawing.Drawing2D.Matrix class 
mtrx.Rotate(angle);
RectangleF rct = path.GetBounds(mtrx);
Bitmap newImg = new Bitmap(Convert.ToInt32(rct.Width), Convert.ToInt32(rct.Height), pf);
g = Graphics.FromImage(newImg);
g.Clear(bkColor);
g.TranslateTransform(-rct.X, -rct.Y);
g.RotateTransform(angle);
g.InterpolationMode = InterpolationMode.HighQualityBilinear;
g.DrawImageUnscaled(tempImg, 0, 0);
g.Dispose();
tempImg.Dispose();
return newImg; }

Mais cela ne change pas la hauteur et la largeur de l'image du fichier si le fichier image est de la même taille, mais l'image d'un "objet" a été mis à l'échelle et rotation.

Une idée de comment je peux faire ce bon?

Réponse
J'ai trouver la solution qui a marché avec mon image a une résolution de 300 à vieille réponse ici.

Votre question le titre est un peu trompeur, ce que votre vraiment se poser est de savoir comment calculer la nouvelle largeur/hauteur de l'image une fois qu'il a été tourné, ce qui est plus un mathématiques problème de programmation.
double possible de LockBits rotation de l'image, la méthode ne fonctionne pas?

OriginalL'auteur RickardP | 2013-01-06