我很难解决这个问题,并希望对此有所了解。因此,我正在阅读一份扫描的 PDF 文档,其中包含一个二维码,该二维码始终位于文档的左上角。
由于扫描文件可能会改变文档的方向,我正在检查文档的左上角是否有二维码,如果没有,我将旋转文档并再次检查左上角。这样做的目的是因为 QR 码位于左上角,那么文档的格式符合我的要求。
如何更改我的以下代码以获取 QR 码的文档检查 - 如果未找到,请再次旋转整个文档检查并继续直到找到 QR 码。我也应该循环旋转 90 而不是 90 - 180 - 270。
using (var fullImg = new Bitmap(workGif))
{
var bandImg = fullImg.Clone(new System.Drawing.Rectangle(0, 0, 375, 375), fullImg.PixelFormat);
Bitmap result = fullImg;
if (Process(bandImg) == null)
{
fullImg.RotateFlip(RotateFlipType.Rotate270FlipNone);
bandImg = fullImg.Clone(new System.Drawing.Rectangle(0, 0, result.Width, result.Height), fullImg.PixelFormat);
if (Process(bandImg) == null)
{
fullImg.RotateFlip(RotateFlipType.Rotate90FlipNone);
bandImg = fullImg.Clone(new System.Drawing.Rectangle(0, 0, result.Width, result.Height), fullImg.PixelFormat);
if (Process(bandImg) == null)
{
fullImg.RotateFlip(RotateFlipType.Rotate180FlipNone);
bandImg = fullImg.Clone(new System.Drawing.Rectangle(0, 0, result.Width, result.Height), fullImg.PixelFormat);
}
}
}
bandImg.Save(@"C:\NewImageTest.png");
string QRinfo = Process(bandImg);
MessageBox.Show(QRinfo);
}
处理方法 我在这个方法中通过图片来查看是否有二维码可以读取。
public string Process(Bitmap bitmap)
{
var reader = new com.google.zxing.qrcode.QRCodeReader();
try
{
LuminanceSource source = new RGBLuminanceSource(bitmap, bitmap.Width, bitmap.Height);
var binarizer = new HybridBinarizer(source);
var binBitmap = new BinaryBitmap(binarizer);
return reader.decode(binBitmap).Text;
}
catch (Exception e)
{
return null;
}
}