Я реализовал свой собственный видоискатель и логику камеры для захвата изображений. Все работает отлично, за исключением некоторых странных проблем ориентации. Фотографии, сделанные с помощью моего приложения, могут быть в портретном или альбомном режиме. Когда я просматриваю фотографии с помощью встроенного приложения для фотографий, ориентация будет такой, как ожидалось. Когда я просматриваю фотографии с ПК во время подключения телефона vi USB, миниатюры всегда находятся в ландшафте, но когда я открываю файл, фотография будет правильно в портретном режиме. Когда я привязываю изображения в своем приложении к изображению Telerik PanAndZoom, то снова ориентация неверна.Неправильная ориентация захвата фотографий с помощью PhotoCaptureDevice
Здесь мой код инициализации.
Windows.Foundation.Size best;
// Initialize the camera, when available.
if (PhotoCaptureDevice.AvailableSensorLocations.Contains(CameraSensorLocation.Back))
{
// Use the back camera.
best = FindBestResolutuion(CameraSensorLocation.Back, AspectRatio.R_16_9);
_captureDevice = await PhotoCaptureDevice.OpenAsync(CameraSensorLocation.Back, best);
_captureDevice.SetProperty(KnownCameraPhotoProperties.FlashMode,
}
else if (PhotoCaptureDevice.AvailableSensorLocations.Contains(CameraSensorLocation.Front))
{
// Otherwise, use the front camera.
best = FindBestResolutuion(CameraSensorLocation.Front);
_captureDevice = await PhotoCaptureDevice.OpenAsync(CameraSensorLocation.Front, best);
}
if (Math.Round(best.Width/best.Height, 1) == 1.3)
_detecteAspectRatio = AspectRatio.R_4_3;
else
_detecteAspectRatio = AspectRatio.R_16_9;
SetOrientation(this.Orientation);
//Set the VideoBrush source to the camera.
viewfinderBrush.SetSource(_captureDevice);
Это код для захвата.
if (!_capturing)
{
_capturing = true;
_captureMemoryStream = new MemoryStream();
_thumbnailMemoryStream = new MemoryStream();
CameraCaptureSequence sequence = _captureDevice.CreateCaptureSequence(1);
sequence.Frames[0].CaptureStream = _captureMemoryStream.AsOutputStream();
sequence.Frames[0].ThumbnailStream = _thumbnailMemoryStream.AsOutputStream();
await _captureDevice.PrepareCaptureSequenceAsync(sequence);
await sequence.StartCaptureAsync();
_capturing = false;
_captureDevice.SetProperty(KnownCameraPhotoProperties.LockedAutoFocusParameters, AutoFocusParameters.None);
//Set the stream position to the beginning.
_captureMemoryStream.Seek(0, SeekOrigin.Begin);
await _viewModel.CurrentSession.SavePictureAsync(_captureMemoryStream);
}
Есть идеи?
Вы можете указать, что вращение в коде? Ошибка получения ошибки – asitis
Вращение - целое число, которое сообщает о степени вращения. При удержании телефона в ландшафте оно равно 0, в портретном режиме - -90, а в альбомном режиме - 180 – bitdisaster
Спасибо, он решил мою проблему. –