Я вращаю QR-код, используя следующий код:
private static Image RotateImage(Image image, float angle)
{
float height = image.Height;
float width = image.Width;
int hypotenuse = System.Convert.ToInt32(System.Math.Floor(Math.Sqrt(height * height + width * width)));
Bitmap rotatedImage = new Bitmap(hypotenuse, hypotenuse);
using (Graphics g = Graphics.FromImage(rotatedImage))
{
g.TranslateTransform((float)rotatedImage.Width / 2, (float)rotatedImage.Height / 2); //set the rotation point as the center into the matrix
g.RotateTransform(angle); //rotate
g.TranslateTransform(-(float)rotatedImage.Width / 2, -(float)rotatedImage.Height / 2); //restore rotation point into the matrix
g.DrawImage(image, (hypotenuse - width) / 2, (hypotenuse - height) / 2, width, height);
}
return rotatedImage;
}
Затем я рисую этот повернутый QR-код на простой белой прямоугольной области (области по бокам отQR-код в изображении).Когда я пытаюсь прочитать повернутый QR-код с помощью библиотеки ZXing Reader, он не декодирует изображение (если поворот не кратен 90).Я подумал, что это может быть связано с искажением изображения после поворота.Когда я увеличиваю повернутое изображение, на изображении появляются очень светлые видимые серые участки, и изображение кажется совмещенным (имеет эффект лестницы).Есть ли способ исправить это искажение?
Вот пример изображения, повернутого на -80 градусов:
Вот какизображение выглядит увеличенным: