1

どこを見ても、写真を撮った後、どうやって写真を保存するのかわかりません。私はWindows8メディアキャプチャを使用しており、キャプチャした後、ページに表示します。しかし、それを特定の場所に保存する方法がわかりません。

これは私が写真を撮る方法です、かなり古典的です:

    private async void Camera_Clicked(object sender, TappedRoutedEventArgs e)
    {
        TurnOffPanels();

        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;
        }
    }

そして、これは私がそれを取った後に私がそれをリロードする方法です:

    private async Task ReloadPhoto(String photoPath)
    {
            StorageFile photo = await StorageFile.GetFileFromPathAsync(photoPath);
            BitmapImage bmp = new BitmapImage();
            using (IRandomAccessStream stream = await photo.OpenAsync(FileAccessMode.Read))
            {
                bmp.SetSource(stream);
            }

    }

写真を保存する方法を知っている人はいますか?

よろしく。

4

3 に答える 3

0

以下の例では、FileSavePicker を使用します。

  FileSavePicker savePicker = new FileSavePicker();
  savePicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
  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);
  }

photo は、カメラから取得する StorageFile です。

于 2013-01-28T16:55:52.913 に答える
0

おそらくこれ

      private async void btnSave(object sender, RoutedEventArgs e)
    {
        //ImageTarget.Source = await ResizeWritableBitmap(m_bitmap, 800, 800);
        if (m_bitmap == null)
            return;

         Windows.Storage.StorageFile filename = await GetSaveLocation();
        if (filename == null)
           return;

        IRandomAccessStream filestream = await filename.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite);

        BitmapEncoder encode = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, filestream);

        byte []pixelbuff;
        var stream = m_bitmap.PixelBuffer.AsStream();
        pixelbuff = new byte[stream.Length];

        await stream.ReadAsync(pixelbuff, 0, pixelbuff.Length);

        encode.SetPixelData(BitmapPixelFormat.Rgba8, BitmapAlphaMode.Straight,(uint) m_bitmap.PixelWidth
                            ,(uint) m_bitmap.PixelHeight, 96.0, 96.0, pixelbuff);
        await encode.FlushAsync();
        await filestream.FlushAsync();

        filestream.Dispose();
    }
于 2013-04-25T21:44:57.760 に答える
0

試しましたが、成功しません。保存できるようになりましたが、何も保存しません。理解できない ImageStream で失敗したと思います。

これはリーダーなしのコードです。申し訳ありませんが、私は Windows 8 C# の初心者です。

    private async void save_Click_1 (object sender, RoutedEventArgs e)
    {

        FileSavePicker savePicker = new FileSavePicker();
        savePicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
        savePicker.FileTypeChoices.Add("jpeg", new List<string>() { ".jpeg" });
        savePicker.SuggestedFileName = "New picture";

        StorageFile ff = await savePicker.PickSaveFileAsync();
        if (ff != null)
        {
        }
    }
于 2013-01-30T15:42:02.727 に答える