сохранить изображение из CameraCaptureUI в папку - PullRequest
0 голосов
/ 01 октября 2019

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

        class CameraOpening{
        public async Task<SoftwareBitmapSource> PhotoTake(){
            var captureUI = new CameraCaptureUI();
            captureUI.PhotoSettings.Format = CameraCaptureUIPhotoFormat.Jpeg;
            captureUI.PhotoSettings.AllowCropping = false;
            var photo = await captureUI.CaptureFileAsync(CameraCaptureUIMode.Photo);
            var bitmapSource = new SoftwareBitmapSource();
            if (photo != null){
                var folder = await ApplicationData.Current.LocalFolder.CreateFolderAsync(
                    "ProfilePhotoFolder", CreationCollisionOption.OpenIfExists);
                await photo.CopyAsync(folder,"ProfilePhoto.jpg",NameCollisionOption.ReplaceExisting);

                using (var stream = await photo.OpenAsync(FileAccessMode.Read)){
                    var decoder = await BitmapDecoder.CreateAsync(stream);
                    var softwareBitmap = await decoder.GetSoftwareBitmapAsync();
                    var softwareBitmapBGR8 = SoftwareBitmap.Convert(
                    softwareBitmap, BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied);

                    await bitmapSource.SetBitmapAsync(softwareBitmapBGR8);}
                await photo.DeleteAsync();}
            return bitmapSource;}}

    public async void Buttonfoto(object sender, RoutedEventArgs e)
    {
        var cam = new CameraOpening();
        imageControl.Source = await cam.PhotoTake();
    }

, и у xaml есть Изображение иНа кнопке

есть способ сохранить снимок, сделанный в определенном каталоге? или его копию.

1 Ответ

0 голосов
/ 01 октября 2019

Линии:

var folder = await ApplicationData.Current.LocalFolder.CreateFolderAsync("ProfilePhotoFolder", CreationCollisionOption.OpenIfExists);
await photo.CopyAsync(folder, "ProfilePhoto.jpg", NameCollisionOption.ReplaceExisting);

, кажется, уже сохраняет вашу фотографию в путь ./ProfilePhotoFolder/ProfilePhoto.jpg. Но он сохранится, только если на самом деле был сделан снимок.

var photo = await captureUI.CaptureFileAsync(CameraCaptureUIMode.Photo);
// < ... >
if (photo != null) { /* save file! */ }

Проверьте, что на самом деле возвращает captureUI.CaptureFileAsync. Если это null - ничего не произойдет.

Но если ваша фотография делается и уже сохраняется в ./ProfilePhotoFolder/ProfilePhoto.jpg, вы можете сохранить ее снова с помощью:

await photo.CopyAsync(folder, "C:\\SomeFolder\\MyPhoto.jpg", NameCollisionOption.ReplaceExisting);

Или скопировать ужесоздаваемое изображение через:

File.Copy(".\\ProfilePhotoFolder\\ProfilePhoto.jpg", "C:\\SomeFolder\\MyPhoto.jpg");

Подробнее здесь: System.IO и System.IO.File

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...