2012-12-13 4 views

답변

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(); 
    } 
} 

@ 또한 카메라 롤 폴더에 사진을 저장하고 사용할 수있는 방법에 대한 엔드 - 투 - 엔드 코드 샘플 년대 MediaLibrary.SavePictureToCameraRoll() 확장 메서드를 사용하는 ShareMediaTask.

+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(); 
      } 

     }; 
관련 문제