2015-01-20 5 views
1

내 라이브러리에서 사진을 선택하고, 처음에 나는 그것을 자르고 최대 300x300으로 크기를 조정하려면이 사진과 함께 무언가를하고 싶다. 내가 큰 사진을 선택할 때까지는 모든 것이 괜찮습니다.PhotoChooserTask 캔트 작물 큰 사진

큰 이미지 (10000x6000)를 선택하면 PhotoChooserTask은 아무 것도하지 않습니다 (사용자의 관점에서 볼 때). PhotoChooserTask은 응용 프로그램이 아닌 단지 충돌합니다. 그런 다음 다른 하나를 선택하려고하면 "Not allowed to call Show() multiple times before an invocation returns" 예외가 발생합니다.

내 생각에 PhotoChooserTask에 이전 개체가 아직있는 것 같습니다. PhotoChooserTask을 처분하거나 지우는 방법을 모르겠습니다.

추신. 설정하지 않고

chooser.PixelHeight = 300; 
chooser.PixelWidth = 300; 

사진이 설정되며 모든 사항이 정상입니다.

PS2.

삼성 아 티브 S는 문제가되지 않습니다. 만 1320, 520 및

PhotoChooserTask chooser = new PhotoChooserTask(); 

try 
{ 
    chooser.ShowCamera = true; 
    chooser.PixelHeight = 300; 
    chooser.PixelWidth = 300; 

    chooser.Completed += (s, result) => 
    { 
     if (result.Error != null){ return; } 
     if (result.ChosenPhoto != null) 
     { 
      var bitmap = new BitmapImage(); 
      bitmap.SetSource(result.ChosenPhoto); 
      Service.uploadPhoto(receiver, (ImageSource)bitmap); 
     } 
    }; 
    chooser.Show(); 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.Message); 
} 

사진이 크고, 높이 디버거가 이미지 크기는 아마 문제가 내부 chooser.Completed

답변

1

입력하지 않는 설정 (530) 노키아.

10000x6000 이미지 메모리 자체 (픽셀 당 10,000 * 6000 * 4 바이트) 약 240메가바이트 걸릴 것이다. 그만큼 메모리가 많아서 PhotoChooserTask을 사용하는 앱이 중단되어 앱에 아무 것도 반환하지 않을 수 있습니다.

+0

네,하지만 내가 츄에 PixelHight 및 PixelWidth 설정하지 않는 경우 (그게 전부 수단을 PhotoChooserTask 내에서 이미지 크기를 조정/초기 작물을 해달라고는) 다음 모든 것이 괜찮습니다. 나는 이렇게 큰 사진을 설정할 수는 없지만 사용자가 모든 것을 할 수 있으므로이 사진으로 PhotoChooserTask를 처리하여 사용자가 다른 사진을 선택할 수있게 할 수 있습니까? 왜냐하면 PhotoChooserTask를 사용하면 사용자가 응용 프로그램을 다시 시작할 때까지 PhotoChooserTask를 다시 사용할 수 없기 때문입니다. –

1

가능한 해결책은 선택한 사진을 낮은 품질 또는 동일한 해상도로 jpeg에 저장하는 것이지만 Cimbalino Phone Toolkit의 SavePng() 메서드와 같은 고압 메서드를 사용하여 압축 한 다음 이미지를 자릅니다.

나는 그 다음 8MB 그것의 효과를 적용 할 수 2백40메가바이트 이미지를 변환하는 데 사용합니다.