我正在使用以下代码旋转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码。当我尝试使用ZXing阅读器库读取旋转的QR码时,它不会解码图像(除非旋转是90的倍数)。我认为这可能是由于旋转后图像变形所致。当我放大旋转的图像时,图像上有非常浅的可见灰色部分,并且图像看起来像是混叠的(具有阶梯效果)。有没有办法解决这种失真?
答案 0 :(得分:0)
我猜您只需要提高图像的分辨率即可。
由于QR码是矩形的,因此即使原始图像很小,也可以将其放大,然后旋转它。