アプリ内で (CameraCaptureTask を使用して) 撮影した写真を分離ストレージに保存したいと考えています。現在の問題は、常にOutOfMemoryExceptionにつながる RAM の消費です。これは、画像を Image-Control にロードしているときにも発生します。
私のアプリは最終的に 10 枚の写真を撮り、それらを分離ストレージに保存し、それらをイメージ コントロールに表示し、必要に応じて写真を完全に削除できるようになります。
写真の解像度を下げると論理的に例外が修正されましたが、それは私が望んでいた方法ではありません.
多分あなたは私にヒントを与えることができます。
これが私のコードです:
private CameraCaptureTask ccTask = new CameraCaptureTask();
WriteableBitmap[] imgList = new WriteableBitmap[10];
Random rnd = new Random();
private void addPicture_button_Click(object sender, EventArgs e)
{
    ccTask.Show();
    ccTask.Completed += ccTask_Completed;
}
void ccTask_Completed(object sender, PhotoResult e)
    {
        if (e.TaskResult == TaskResult.OK)
        {
            WriteableBitmap writeableBitmap = new WriteableBitmap(1600,1200);
            writeableBitmap.LoadJpeg(e.ChosenPhoto);
            string imageFolder = "Unfaelle";
            string datetime = DateTime.Now.ToString().Replace("/","");
            datetime = datetime.Replace(":","");
            string imageFileName = "Foto_"+datetime+".jpg";
            using (var isoFile = IsolatedStorageFile.GetUserStoreForApplication())
            {
                if (!isoFile.DirectoryExists(imageFolder))
                {
                    isoFile.CreateDirectory(imageFolder);
                }
                string filePath = System.IO.Path.Combine(imageFolder, imageFileName);
                using (var stream = isoFile.CreateFile(filePath))
                {
                    writeableBitmap.SaveJpeg(stream, writeableBitmap.PixelWidth, writeableBitmap.PixelHeight, 0, 100);
                }
            }
            //now read the image back from storage to show it worked...
            BitmapImage imageFromStorage = new BitmapImage();
            using (var isoFile = IsolatedStorageFile.GetUserStoreForApplication())
            {
                string filePath = System.IO.Path.Combine(imageFolder, imageFileName);
                using (var imageStream = isoFile.OpenFile(
                    filePath, FileMode.Open, FileAccess.Read))
                {
                    imageFromStorage.SetSource(imageStream);
                }
            }
            Rectangle b = new Rectangle()
            {
                Width = 100,
                Height = 100,
            };
            Thickness margin = b.Margin;
            margin.Left = 10;
            margin.Top = 10;
            b.Margin = margin;
            ImageBrush imgBrush = new ImageBrush();
            imgBrush.ImageSource = imageFromStorage;
            b.Fill = imgBrush;
            b.Tag = System.IO.Path.Combine(imageFolder, imageFileName);
            b.Tap += OnTapped;
            pictures_wrapPanel.Children.Add(b);
        }
    }
private void OnTapped(object sender, System.Windows.Input.GestureEventArgs e)
        {
            Rectangle r = sender as Rectangle;
            BitmapImage imageFromStorage = new BitmapImage();
            using (var isoFile = IsolatedStorageFile.GetUserStoreForApplication())
            {
                string filePath = r.Tag.ToString();
                using (var imageStream = isoFile.OpenFile(
                    filePath, FileMode.Open, FileAccess.Read))
                {
                    imageFromStorage.SetSource(imageStream);
                }
            }
            img.Source = imageFromStorage;
        }
どうもありがとう、不明な点があれば、お気軽に質問してください。写真を保存するもっと簡単な方法があるかもしれません。私はアプリ開発を始めたばかりです。
ところで: 1600x1200 は 2MP です。例外を回避するために解像度を下げましたが、残念ながら遅延しました