1

我有一个非常罕见的问题。首先让我告诉你,我想构建一个关于图像的 WP8 应用程序。我在项目解决方案中存储了一些图像,并将这些图像用于应用程序,并且工作正常。我正在使用一个

public Stream ImageStream
    {
        get
        {
            return this.imageStream;
        }

        set
        { 
            this.imageStream = value;
        }  

}

现在对于项目解决方案图像这个图像流我这样调用

StreamResourceInfo imageRes = Application.GetResourceStream(new Uri("WindowsPhone;component/Images/Image1.jpg", UriKind.Relative));
    this.ImageStream = imageRes.Stream;

现在,如果我尝试使用媒体库中的任何图像,问题就开始了。我可以将文件存储到独立存储中,然后我可以从他们那里访问文件。我正在做的是

using (IsolatedStorageFile Iso = IsolatedStorageFile.GetUserStoreForApplication())
 {
     using (var stream = new IsolatedStorageFileStream(strFileName, FileMode.Open, FileAccess.Read, Iso))
     { 
         IsolatedStorageFileStream fileStream = Iso.OpenFile(strFileName, FileMode.Open, FileAccess.Read);

                    data = new byte[stream.Length];

                    // Read the entire file and then close it
                    stream.Read(data, 0, data.Length);
                    stream.Close();                     
                }
            }
            MemoryStream ms = new MemoryStream(data);
            BitmapImage bi = new BitmapImage();

            // Set bitmap source to memory stream
            bi.SetSource(ms);

但是我可以使用图像文件并且可以显示,但是您可以看到它是位图图像,并且由于它位于隔离存储中,因此我无法使用

StreamResourceInfo imageRes ...
this.ImageStream = ...

任何帮助我如何使用 this.ImageSteam 属性?欢迎任何其他想法。我实际上是 WP8 编程的初学者

或者让我问你一个简单的问题,我如何才能读取隔离存储中的图像StreamResourceInfo

如果我能做到,我的问题就解决了。请帮我。

4

2 回答 2

3

*将图像保存到独立存储:*

String tempJPEG = "logo.jpg";

            // Create virtual store and file stream. Check for duplicate tempJPEG files.
            using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
            {
                if (myIsolatedStorage.FileExists(tempJPEG))
                {
                    myIsolatedStorage.DeleteFile(tempJPEG);
                }

                IsolatedStorageFileStream fileStream = myIsolatedStorage.CreateFile(tempJPEG);

                StreamResourceInfo sri = null;
                Uri uri = new Uri(tempJPEG, UriKind.Relative);
                sri = Application.GetResourceStream(uri);

                BitmapImage bitmap = new BitmapImage();
                bitmap.SetSource(sri.Stream);
                WriteableBitmap wb = new WriteableBitmap(bitmap);

                // Encode WriteableBitmap object to a JPEG stream.
                Extensions.SaveJpeg(wb, fileStream, wb.PixelWidth, wb.PixelHeight, 0, 85);

                //wb.SaveJpeg(fileStream, wb.PixelWidth, wb.PixelHeight, 0, 85);
                fileStream.Close();
            }

快乐的编码...

于 2013-05-01T04:18:59.577 回答
2

为什么要执行流复制?

http://www.windowsphonegeek.com/tips/All-about-WP7-Isolated-Storage---Read-and-Save-Images

尝试类似的东西

BitmapImage bi = new BitmapImage();
using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
    using (IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile("logo.jpg", FileMode.Open, FileAccess.Read))
    {
        bi.SetSource(fileStream);
        this.img.Height = bi.PixelHeight;
        this.img.Width = bi.PixelWidth;
    }
}
this.img.Source = bi;
于 2013-04-30T20:17:14.857 回答