2015-07-24 9 views
0

Я новичок в программировании на Windows! Мой вопрос заключается в том, как сохранять и извлекать изображение в файл в Windows Phone 8.1? Я уже видел несколько ссылок, но все они в Windows Phone 7. [http://www.geekchamp.com/tips/all-about-wp7-isolated-storage---read-and-save-images#][1] я не буду что-то вроде этого, но этот код работать только на Windows Phone 7Сохранение и извлечение изображения в файл на Windows Phone 8.1

// Создание файла для файла JPEG в изолированном хранилище , Строка 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(); 
     } 

ответ

0

Это, как я сохранить элемент пользовательского интерфейса в формате PNG:

  StorageFolder localFolder = ApplicationData.Current.TemporaryFolder; 
      StorageFile file = await localFolder.CreateFileAsync(file.png, CreationCollisionOption.ReplaceExisting); 
      var renderTargetBitmap = new RenderTargetBitmap(); 
      await renderTargetBitmap.RenderAsync(element); 
      var pixels = await renderTargetBitmap.GetPixelsAsync(); 

      using (IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.ReadWrite)) 
      { 
       var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream); 
       byte[] bytes = pixels.ToArray(); 
       encoder.SetPixelData(
        BitmapPixelFormat.Bgra8, 
        BitmapAlphaMode.Straight, 
        (uint)renderTargetBitmap.PixelWidth, 
        (uint)renderTargetBitmap.PixelHeight, 
        DisplayInformation.GetForCurrentView().LogicalDpi, 
        DisplayInformation.GetForCurrentView().LogicalDpi, 
        bytes); 

       await encoder.FlushAsync(); 
      }