2014-06-08 2 views
4

나는 C#에서 Windows phone 8.1 응용 프로그램을 개발 중입니다. 나는 사진을 찍기 위해 카메라를 사용하고있다. 그림이 장치에 저장된 것보다 그림 상자에 표시하려고합니다. HTC 폰에서 테스트 해 보았는데 좋았습니다.하지만 노키아 루미아 (Nokia Lumia)에서 해보았을 때 그림이로드되지 않았습니다. 누구든지 해결 방법을 알고 있습니까? 여기 Windows phone picturebox

내가 사진을 찍을 노래하고 코드입니다 :

private void snap_task_Click(object sender, EventArgs e) 
    { 
     cameraCaptureTask = new CameraCaptureTask(); 
     cameraCaptureTask.Completed += cameraCaptureTask_Completed; 
     cameraCaptureTask.Show(); 

    } 

    void cameraCaptureTask_Completed(object sender, PhotoResult e) 
    { 
     if (e.TaskResult == TaskResult.OK) 
     { 
      NavigationService.Navigate(new Uri("/Slika.xaml?fotka=" + e.OriginalFileName, UriKind.Relative)); 

     } 
    } 

그리고 이것은 내가 사진 toload 시도 코드입니다. 지역의 자원에서

public Slika() 
    { 
     InitializeComponent(); 
     string slika = string.Empty; 
     string slika2 = string.Empty; 
     this.Loaded += (s, e) => 
     { 

      if (NavigationContext.QueryString.TryGetValue("fotka", out slika)) 
      { 

       putanja = slika; /*"/Resources/" + slika + ".png";/**/ 

       int x = putanja.Length; 

       if (x == 1) 
       { 
        putanja = "/Resources/" + putanja + ".png"; 
        uriPutanja = new Uri(putanja, UriKind.Relative); 
        fotka = new BitmapImage(uriPutanja); 
       } 
       else 
       { 
        uriPutanja = new Uri(putanja, UriKind.Relative); 
        porukaTextBox.Text = putanja; 
        fotka = new BitmapImage(uriPutanja); 
       } 
      } 
      img1.Source = fotka; 

     }; 

    } 

PS

로드는 모두 휴대폰에서 잘 작동이 노키아에 그 원인이되는 경우 문제의 단지 "다른"부분입니다.

+0

사진이 *의 카메라 롤에 *의 엿 먹어에 저장됩니다, 당신은 거기에서 그것을 얻을해야합니다. – Romasz

+0

그곳에 저장되어 있다는 것을 알고 있습니다. "putanja"라는 문자열이 그림의 전체 경로를 포함하고 있기 때문에 작동해야합니까? 뭔가 잘못하고있는 경우 코드 예제를 게시 할 수 있습니까? –

답변

3

휴대 전화의 카메라 롤 폴더에 이미지를 저장하고 대신 메모리 카드에 이미지를 저장 한 다음 시도해보십시오 (휴대 전화 설정에서 변경 한 다음 새 사진을 저장한다고 말함). SD 카드에) 작동한다면 이미지를 얻기 위해 PhotoChooserTask를 사용해보십시오. 나는 다음과 같은 코드가 도움이 될 수 있기를 바랍니다 :

using Microsoft.Phone.Tasks; 
    using System.IO; 
    using System.Windows.Media.Imaging; 
    ... 
    PhotoChooserTask selectphoto = null; 
    private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     selectphoto = new PhotoChooserTask(); 
     selectphoto.Completed += new EventHandler(selectphoto_Completed); 
     selectphoto.Show(); 
    } 
    void selectphoto_Completed(object sender, PhotoResult e) 
    { 
     if (e.TaskResult == TaskResult.OK) 
     { 
      BinaryReader reader = new BinaryReader(e.ChosenPhoto); 
      image1.Source = new BitmapImage(new Uri(e.OriginalFileName)); 
     } 
    } 
+1

당신의 도움에 대한 Thx, 지금 SD 카드에 그림을 저장할 때 작동합니다, 지금 사진을 선택하기 위해 코드를 사용하려고합니다 –

2

UriKind를 Relative에서 Absolute로 변경할 수 있습니다. 내가 당신의 코드를 이해했다면 그림의 절대 경로를 얻을 수 있습니다.

+1

나는 그것을 시도했지만 여전히 작동하지 않는다. 또한 UriKind를 AbsoluteOrRelative로 설정하려고 시도했지만 잘 작동하지 않았다. –

0

코드를 이해하면 else 케이스에서 .png를 잊어 버린 것입니다.

+0

그 점도 확인해 봤지만 그림은 .jpg이고 확장자는 "putanja"문자열에 이미 기록되어 있으므로 문제가 아닌 것으로 확신합니다. 게다가, 그것은 하나의 휴대 전화에서 작동합니다. –

+0

그게 사실이라면. 첫 번째 경우에는 확장자를 만들어야하지만 다른 경우에는 확장자를 만들어야한다는 것이 이상하게 보입니다. 그것이 내가 볼 수있는 유일한 문제였다. – JTIM

+0

첫 번째 경우에는 로컬 리소스에 저장되어있는 그림의 이름이 있었기 때문에 그 경로와 확장명을 추가해야했습니다. 그 밖의 부분에는 확장명이 저장된 전체 경로가 있습니다. "putanja"문자열에서 어쨌든, 당신의 도움을 주셔서 감사합니다 :) –

관련 문제