Я пытаюсь написать код, который будет искать в pdf-файл, и вызвать метод Process (чтобы найти qr-код в pdf-файле), если он не найден, тогда он вращает файл и запускает Process метод снова. В настоящее время я не думаю, что то, что я фактически проверял файл после поворота, но проверяет тот же исходный файл в его исходном формате. Как я могу передать в повернутом изображение должным образом в методе Process:код рефакторинга для лучшей рекурсии
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, 375, 375), fullImg.PixelFormat);
if (Process(bandImg) == null)
{
fullImg.RotateFlip(RotateFlipType.Rotate90FlipNone);
bandImg = fullImg.Clone(new System.Drawing.Rectangle(0, 0, 375, 375), fullImg.PixelFormat);
if (Process(bandImg) == null)
{
fullImg.RotateFlip(RotateFlipType.Rotate180FlipNone);
bandImg = fullImg.Clone(new System.Drawing.Rectangle(0, 0, 375, 375), fullImg.PixelFormat);
//Process(bandImg);
string QRinfo = Process(bandImg);
MessageBox.Show(QRinfo);
string[] qcode = QRinfo.Split('/');
string gid = qcode[qcode.Count() - 1];
Guid pgGuid = new Guid(gid);
var ar = dc.Assessments.FirstOrDefault(c => c.ID == pgGuid);
if (ar != null)
{
var p = inputDocument.Pages[pg];
string opdName = FILESTORELOCATION + pgGuid.ToString() + ".pdf";
PdfDocument opd = new PdfDocument(opdName);
opd.Pages.Add(p);
opd.Close();
ar.StoragePath = opdName;
ar.LastUploadedDT = DateTime.UtcNow;
ar.UploadedByUserID = uploadingUser;
dc.SubmitChanges();
}
}
}
}
Процесс Метод:
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;
}
}
В коде, который вы отправили, нет рекурсии ... –
Вы передаете 'bandImg' в' Process() ', но вы никогда не обновляете' bandImg' после того, как вы повернули PDF; вы пробовали делать 'bandImg = fullImg.Clone (...' вызов после поворота и передачи * это * значение? – newfurniturey
@AlexeiLevenkov, потому что мне нужна помощь в преобразовании операторов if в правильный рекурсивный вызов после поворота изображения – Masriyah