Как повернуть изображение х градусов в C #?

Я провел поиск и не могу найти функцию, которая делает то, что я хочу.

У меня есть файл изображения отсканированного документа с текстом, но документ повернут на несколько градусов, поэтому я хочу повернуть его так, чтобы текст находился на одной линии друг с другом.

В идеальном мире это должна быть функция, делающая это автоматически, но я не могу ничего найти и понять то, что я понимаю, чтобы заставить его работать автоматически, необходимо провести некоторый анализ изображения, и я думаю, что это очень важно.

Но тогда я сделал инструмент для поворота изображения на веб-сайте вручную, но теперь мне нужна функция для сохранения поворота в файл изображения.

Кажется, это разные методы, но никто из тех, кого я тестировал, делал то, что хотел.

Функция, которую я нашел, работает почти так, как я хочу:

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

Но это не меняет высоту и ширину файла изображения, поэтому файл изображения имеет тот же размер, что и изображение »объект» был масштабирован и повернут.

Любая идея, как я могу сделать это хорошо?

Ответ Я нахожу решение, которое работало с моим изображением, которое имеет разрешение 300 настарый ответ здесь.

Ответы на вопрос(2)

Ваш ответ на вопрос