私はこれに頭を悩ませているので、これについて意見を求めていました。そのため、常にドキュメントの左上隅にある QR コードを含むスキャンした PDF ドキュメントを読み込んでいます。
ファイルをスキャンするとドキュメントの向きが変わる可能性があるため、ドキュメントの左上隅をチェックしてQRコードがあるかどうかを確認し、そうでない場合はドキュメントを回転させて左隅を再度確認します. これの目的は、QR コードが左上隅にあり、ドキュメントが私の要件に適した形式であるためです。
QRコードのドキュメントチェックを取得するように次のコードを変更するにはどうすればよいですか-見つからない場合は、ドキュメントチェック全体を再度ローテーションし、QRコードが見つかるまで続行します. また、90 - 180 - 270 ではなく、ループで 90 だけ回転する必要があります。
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);
}
Process メソッド このメソッドに画像を渡し、読み取る QR コードがあるかどうかを確認します。
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;
}
}