1

私はC#が初めてで、写真を撮ってローカルストレージに保存できるアプリケーションメトロを作成したいと考えています。分離ストレージを使用する必要があることはわかっていますが、画像に使用する方法が本当にわかりません。文字列の例はたくさん見ましたが、画像の例は見ませんでした。

誰かがそれを行う方法を知っていれば? 実際に私は写真を撮り、ユーザーに好きな場所に記録するように依頼します。しかし、ユーザーが写真を撮った後に自動記録が必要です。これは今のところ私のコードです:

private async void Camera_Clicked(object sender, TappedRoutedEventArgs e)
    {       
        CameraCaptureUI camera = new CameraCaptureUI();
        camera.PhotoSettings.CroppedAspectRatio = new Size(16, 9);
        StorageFile photo = await camera.
                                  CaptureFileAsync(CameraCaptureUIMode.Photo);

        if (photo != null)
        {
            BitmapImage bmp = new BitmapImage();
            IRandomAccessStream stream = await photo.
                                               OpenAsync(FileAccessMode.Read);
            bmp.SetSource(stream);
            ImageSource.Source = bmp;
            ImageSource.Visibility = Visibility.Visible;

            appSettings[photoKey] = photo.Path;


            FileSavePicker savePicker = new FileSavePicker();
            savePicker.FileTypeChoices.Add
                                  ("jpeg image", new List<string>() { ".jpeg" });

            savePicker.SuggestedFileName = "New picture";

            StorageFile ff = await savePicker.PickSaveFileAsync();

            if (ff != null)
            {
                await photo.MoveAndReplaceAsync(ff);                 
            }
        }
    }
4

1 に答える 1

1

ファイル ピッカー ロジックをローカル フォルダー内の StorageFile オブジェクトの取得に置き換えるだけです。たとえば、次のようになります。

private async void Camera_Clicked(object sender, TappedRoutedEventArgs e)
{       
   CameraCaptureUI camera = new CameraCaptureUI();
   camera.PhotoSettings.CroppedAspectRatio = new Size(16, 9);
   StorageFile photo = await camera.
                          CaptureFileAsync(CameraCaptureUIMode.Photo);

   if (photo != null)
   {
      var targetFile = await ApplicationData.Current.LocalFolder.CreateFileAsync("some_file_name.jpg");
      if (targetFile != null)
      {
         await photo.MoveAndReplaceAsync(targetFile);                 
      }
   }
}
于 2013-02-01T20:18:47.030 に答える