Более лучший способ выбора изображений из галерии или камеры в UWP приложениях
Перевод статьи Choosing an image from gallery or camera a bit better in Universal Windows apps
При разработке Windows Phone приложений могут возникнуть случаи, когда нужно разрешить пользователю выбрать какую-либо фотографию из галереи или сделать новый снимок с помощью камеры телефона. Одним из примеров этого может быть процесс регистрации, когда пользователь может выбрать фото для профиля.
В Windows Phone 8.1, эта задача решается довольно просто, просто использовать FileOpenPicker
. Это позволяет выбрать фотографию из галереи или сделать новую фотографию. Просто взгляните на эту анимацию, показывающую, как пользователь выбирает новую фотографию с помощью камеры телефона.
Код этого относительно простой, хотя модель AndContinue
может заставить помучаться
var openPicker = new FileOpenPicker
{
ViewMode = PickerViewMode.Thumbnail,
SuggestedStartLocation = PickerLocationId.PicturesLibrary
};
openPicker.FileTypeFilter.Add(".jpg");
openPicker.PickSingleFileAndContinue();
В Windows 10 Mobile, FileOpenPicker
был изменен, чтобы быть более настраиваемым. Это делает процесс выбора новых фотографий с помощью камеры телефона полностью скрытым. Для простого пользователя нет шансов обнаружить его, просто взгляните на эту анимацию:
Так, как сделать этот процесс немного более удобным для пользователя? Мое решение - вместо вызова FileOpenPicker
показать Flyout
с двумя опциями: выбрать из галлереи и сделать фото. Вариант выбрать из галереи просто вызывает FileOpenPicker
.
var openPicker = new FileOpenPicker
{
ViewMode = PickerViewMode.Thumbnail,
SuggestedStartLocation = PickerLocationId.PicturesLibrary
};
openPicker.FileTypeFilter.Add(".jpg");
var file = await openPicker.PickSingleFileAsync();
if (file != null)
{
await ProcessFile(file);
}
а опция сделать фото с использованием CameraCaptureUI для непосредственной съемки
var ccu = new CameraCaptureUI();
var file = await ccu.CaptureFileAsync(CameraCaptureUIMode.Photo);
if (file != null)
{
await ProcessFile(file);
}
Результат может выглядеть так. Не забудьте добавить опцию для удаления фотографии, если она уже была выбрана.
Теги: c#, windows phone, uwp, перевод