Zxing.net декодирует возврат нулевого значения в приложении Windows Phone store

113
12

У меня есть код, который используется для захвата изображения потока с камеры.

Ниже приведен код настройки камеры, где я инициализирую его, установите максимальное разрешение, отключите флеш, поверните представление, настройте зеркалирование и запустите предварительный просмотр.

_mediaCapture = new MediaCapture();
await _mediaCapture.InitializeAsync(settings);

var maxResolution =
_mediaCapture.VideoDeviceController.GetAvailableMediaStreamProperties(MediaStreamType.Photo)
.Aggregate(
(i1, i2) =>
(i1 as VideoEncodingProperties).Width > (i2 as VideoEncodingProperties).Width ? i1 : i2);
await _mediaCapture.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.Photo, maxResolution);

_mediaCapture.VideoDeviceController.FlashControl.AssistantLightEnabled = false;
_mediaCapture.VideoDeviceController.TorchControl.Enabled = false;
_mediaCapture.SetPreviewRotation(VideoRotation.Clockwise90Degrees);
_mediaCapture.SetPreviewMirroring(true);
_mediaCapture.VideoDeviceController.PrimaryUse = CaptureUse.Photo;

VideoCapture.Source = _mediaCapture;
await _mediaCapture.StartPreviewAsync();

После запуска таймера, следующий код используется для захвата фотографии в stream:

var stream = new InMemoryRandomAccessStream();

await _mediaCapture.CapturePhotoToStreamAsync(ImageEncodingProperties.CreateJpeg(), stream);

using (stream)
{
var writeableBmp = new WriteableBitmap(1, 1);
stream.Seek(0);
await writeableBmp.SetSourceAsync(stream);
writeableBmp = new WriteableBitmap(writeableBmp.PixelWidth, writeableBmp.PixelHeight);
stream.Seek(0);
await writeableBmp.SetSourceAsync(stream);
_result = ScanBitmap(writeableBmp);
}

Который передает записываемый объект растрового изображения в функцию сканирования штрих-кода для Decode:

private Result ScanBitmap(WriteableBitmap writeableBmp)
{
var barcodeReader = new BarcodeReader
{
AutoRotate = true,
TryInverted = true,
Options =
{
PureBarcode = false,
TryHarder = true,
PossibleFormats = new[]
{
BarcodeFormat.QR_CODE,
BarcodeFormat.EAN_13
}
},
};

var result = barcodeReader.Decode(writeableBmp);
return result;
}

Я использовал несколько опций, как это видно выше, но сканирование не получается. Функция Decode всегда возвращает значение null. Я также попробовал ResultFound событие barcodeReader, но все тот же.

Здесь что-то не так?

спросил(а) 2014-12-07T04:54:00+03:00 6 лет, 2 месяца назад
1
Решение
105

Я понимаю, что это старая должность, но у меня была одна и та же проблема, и это может спасти некоторых людей. Для меня это было связано с фокусом. На некоторых телефонах драйверы повреждены по этой ссылке:

известные проблемы с драйверами Nokia и новыми API-интерфейсами MediaCapture, как описано здесь. Корпорация Майкрософт работает с Nokia (или подразделением своих устройств), чтобы решить эту проблему. Единственным решением, которое я получил для приложения Runtime, является использование ручной фокусировки. Все остальные попытки дали мне одно исключение после другого, будь то отмена предварительного просмотра или его включение при предварительном просмотре.

Во всяком случае, эта ссылка дает решение, используя слайдер для управления фокусом!

ответил(а) 2015-11-08T02:46:00+03:00 5 лет, 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема