2012-12-13 44 views
0

是否可以將ShareMediaTask與隔離存儲上的圖像保存一起使用。我試圖通過應用下面給出的代碼來實現它。但是當我運行代碼時,當前頁面閃爍並返回到同一頁面。ShareMediaTask與隔離存儲圖像一起使用

var shareMediaTask = new ShareMediaTask { FilePath = "isostore:" + LocalImagePath }; 
    shareMediaTask.Show(); 

回答

4

對不起,目前ShareMediaTask只支持保存的圖片文件夾的相機膠捲文件夾中的媒體庫中的項目。這是出於安全原因。例如,如果您使用ShareMediaTask並與另一個應用程序共享,則該應用程序永遠不能訪問您的應用程序的IsoStore。因此,ShareMediaTask目前不支持IsoStore文件路徑。

下面是如何將圖像保存到MediaLibrary保存的圖片,並使用ShareMediaTask @http://www.reflectionit.nl/Blog/PermaLink620a4c87-a4af-4007-b4bc-81d851b11658.aspx

private void ButtonShare_Click(object sender, RoutedEventArgs e) { 
    var bmp = new WriteableBitmap(this.ContentPanel, null); 
    var width = (int)bmp.PixelWidth; 
    var height = (int)bmp.PixelHeight; 
    using (var ms = new MemoryStream(width * height * 4)) { 
     bmp.SaveJpeg(ms, width, height, 0, 100); 
     ms.Seek(0, SeekOrigin.Begin); 
     var lib = new MediaLibrary(); 
     var picture = lib.SavePicture(string.Format("test.jpg"), ms); 

     var task = new ShareMediaTask(); 

     task.FilePath = picture.GetPath(); 

     task.Show(); 
    } 
} 

您也可以將圖片保存到相機膠捲文件夾並使用一個終端到終端的代碼示例ShareMediaTask使用MediaLibrary.SavePictureToCameraRoll()擴展方法。

+1

'的getPath()'是在'Microsoft.Xna.Framework.Media.PhoneExtensions'(萬一別人不知道)的擴展方法。 – McGarnagle

0


我已經用下面的代碼完成:

BitmapImage bi = new BitmapImage(new Uri(string.Format("Data/{0}/{1}", Category, img), UriKind.Relative))); 
     bi.CreateOptions = BitmapCreateOptions.BackgroundCreation; 
     bi.ImageOpened += (s1, e1) => 
     { 
      var bmp = new WriteableBitmap(bi); 

      var width = (int)bmp.PixelWidth; 
      var height = (int)bmp.PixelHeight; 

      using (var ms = new MemoryStream(width * height * 4)) 
      { 
       bmp.SaveJpeg(ms, width, height, 0, 100); 
       ms.Seek(0, SeekOrigin.Begin); 
       var lib = new MediaLibrary(); 
       Picture picture = null; 
       try 
       { 
        picture = lib.SavePicture(string.Format("test.jpg"), ms); 
       } 
       catch (Exception ex) 
       { 
        Debug.WriteLine(ex.Message); 
       } 

       var task = new ShareMediaTask(); 

       task.FilePath = picture.GetPath(); 

       task.Show(); 
      } 

     };