2013-01-20 20 views
5

Tôi đang sử dụng ImageTools từ codeplex để lưu canvas thành png; tuy nhiên, tôi đã gặp vấn đề tương tự khi tôi đang sử dụng writeableBitmap.SaveJpeg(). Do đó, vấn đề không phải với loại hình ảnh, mà đúng hơn là cách tôi đang lưu hoặc tải trong IsolatedStorage.Lưu và tải hình ảnh vào IsolatedStorage Yêu cầu lưu hai lần

Khi tôi lưu hình ảnh bằng cách nhấn nút lưu tệp, nhưng khi tôi tải hình ảnh thì không có gì xuất hiện. Nếu tôi lưu hình ảnh hai lần thì hình ảnh sẽ tải và được hiển thị chính xác.

Dưới đây là mã của tôi.

Tiết kiệm File:

ExtendedImage myImage = myCanvas.ToImage(); 

using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication()) 
{ 
    if (isoStore.FileExists("image.png")) 
     isoStore.DeleteFile("image.png"); 

    using (var fileStream = isoStore.CreateFile("image.png")) 
    { 
     myImage.WriteToStream(fileStream, "image.png"); 
     fileStream.Close(); 
    } 
} 

tải tập tin

BitmapImage bi = new BitmapImage(); 

using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication()) 
{ 
    if (isoStore.FileExists("image.png")) 
    { 
     using (var fileStream = isoStore.OpenFile("image.png", FileMode.Open)) 
     { 
      bi.SetSource(fileStream); 
      this.img.Height = bi.PixelHeight; 
      this.img.Width = bi.PixelWidth; 
      this.img.Source = bi; 
     } 
    } 
} 
+1

Chỉ cần thử mã của bạn và có vẻ hoạt động tốt, cả trên trình giả lập như trên thiết bị (Nokia Lumia 920) ... –

+0

Tỷ lệ cược. Tôi đã thử trên cả hai trình giả lập và thiết bị (L920, Visual Studio 2012 nhắm mục tiêu Windows Phone 8.0) và lỗi vẫn tồn tại trên cả hai. Cảm ơn bạn đã cho tôi biết nó hoạt động, tuy nhiên. –

Trả lời

0

Hãy thử mã này để lấy hình ảnh từ isoStore. Nó làm việc cho tôi.

using (IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication()) 
{ 
     if (iso.FileExists(string.Format("image.png"))) 
     { 
      string fileName = "image.png"; 
      string filePath = iso.GetType().GetField("m_RootDir", System.Reflection.BindingFlags.NonPublic | 
      System.Reflection.BindingFlags.Instance).GetValue(iso).ToString() + fileName; 
     } 
} 

Bạn có thể đặt nguồn hình ảnh thành tệp filePath và bạn sẽ không gặp bất kỳ sự cố nào khi truy cập tệp.

Nếu điều này không hoạt động, thì vấn đề là khi bạn đang lưu hình ảnh. Bạn có thể phải tìm giải pháp thay thế để lưu canvas thành png hoặc jpeg.

Các vấn đề liên quan