从孤立的存储中检索多个图像

时间:2011-06-22 07:58:57

标签: windows-phone-7 isolatedstorage

我将图像保存到独立存储中,每个图像都有不同的imageFileName。但我有问题检索列表框中的所有已保存的图像。 只设法检索保存的最新图像。 当我硬编码文件路径然后可以检索它。 我希望任何人都能帮我解决这些问题。希望任何人都可以尝试编辑我的代码。感谢。

保存代码:

private void SaveToLocalStorage(string imageFolder, string imageFileName)
        {
            imageFileName = App.imagePath;

            var isf = IsolatedStorageFile.GetUserStoreForApplication();
            if (!isf.DirectoryExists(imageFolder))
            {
                isf.CreateDirectory(imageFolder);
            }

            string filePath = Path.Combine(imageFolder, imageFileName);
            using (var stream = isf.CreateFile(filePath))
            {
                var bmp = new WriteableBitmap(inkCanvas, inkCanvas.RenderTransform);
                bmp.SaveJpeg(stream, bmp.PixelWidth, bmp.PixelHeight, 0, 100);
            }
            MessageBox.Show(filePath            }

检索代码:

private void LoadFromLocalStorage(string imageFolder, string imageFileName )
        {
            var isoFile = IsolatedStorageFile.GetUserStoreForApplication();
            if (!isoFile.DirectoryExists(imageFolder))
            {
                isoFile.CreateDirectory(imageFolder);
            }

            string filePath = Path.Combine(imageFolder, imageFileName);
            using (var imageStream = isoFile.OpenFile(filePath, FileMode.Open, FileAccess.Read))
            {
                var imageSource = PictureDecoder.DecodeJpeg(imageStream);

                BitmapImage bi = new BitmapImage();

                ListBoxItem item = new ListBoxItem();
                bi.SetSource(imageStream);
                item.Content = new Image() { Source = bi, MaxHeight = 100, MaxWidth = 100 };
                listBox1.Items.Add(item);
            }
}

2 个答案:

答案 0 :(得分:4)

尝试类似:

private void LoadFromLocalStorage(string imageFolder)
{
    var isoFile = IsolatedStorageFile.GetUserStoreForApplication();

    // Check if directory exists
    if(!isoFile.DirectoryExists(imageFolder))
    {
        throw new Exception("Image directory not found");
    }

    // Clear listbox
    listBox1.Items.Clear();

    // Get files
    foreach(string fileName in isoFile.GetFileNames())
    {
        string filePath = Path.Combine(imageFolder, fileName);
        using(var imageStream = isoFile.OpenFile(filePath, FileMode.Open, FileAccess.Read))
        {
            var imageSource = PictureDecoder.DecodeJpeg(imageStream);

            BitmapImage bi = new BitmapImage();

            ListBoxItem item = new ListBoxItem();
            bi.SetSource(imageStream);
            item.Content = new Image() { Source = bi, MaxHeight = 100, MaxWidth = 100 };
            listBox1.Items.Add(item);
        }
    }
}

答案 1 :(得分:0)

很难说没有看到更多的代码,但看起来你只是检索一个文件。在代码的其他地方,您是否获得了应该在IsolateStorage目录中并循环遍历它们的所有文件的列表?您是否看到任何错误消息,或者它是否只是默默地失败?