2012-06-01 3 views
2

WP7 카메라 샘플을 사용 중이며 이미지를 캡처 할 때 질문이 있습니다. 바로 지금 표준 480 (w) x 800 (h)를 사용하여 사진을 찍습니다. 내가 뭘하려는 건 내 애플 리케이션이 완벽한 광장으로 이미지를 필요로 광장으로 사진을 찍는 것입니다.카메라를 사용하여 완벽한 사각형으로 그림 캡처?

VideoBrush를 480x480 만 표시하도록 조정했으며 원래 찍은 이미지는 정사각형 사진을 찍은 것처럼 보였지만 사진 허브 안의 일반적인 480x800 세로를 확인하면 나타납니다.

카메라를 정사각형으로 찍거나 위쪽과 아래쪽을 자르는 방법을 아는 사람이 있습니까?

+1

당신은 WritableBitmap을 사용해야합니다. –

답변

4

픽셀을 새 비트 맵으로 수동으로 복사해야합니다. 그래서 카메라가 수평이고 새로운 너비가 높이와 같아 지도록 이미지의 왼쪽 부분을 잘라 내고 싶다면 다음과 같은 코드가 작동합니다 (이 코드는 테스트하지 않았지만 100 % 정확하지는 않지만, 기본 아이디어를 제공해야합니다) :

 WriteableBitmap SquareImage(WriteableBitmap srcBitmap) 
    { 
     int[] srcData = srcBitmap.Pixels; 
     int[] destData = new int[srcBitmap.PixelHeight * srcBitmap.PixelHeight]; 

     for (int row = 0; row < srcBitmap.PixelHeight; ++row) 
     { 
      for (int col = 0; col < srcBitmap.PixelHeight; ++col) 
      { 
       destData[(row * srcBitmap.PixelHeight) + col] = srcData[(row * srcBitmap.PixelWidth) + col]; 
      } 
     } 

     WriteableBitmap squareBitmap = new WriteableBitmap(srcBitmap.PixelHeight, srcBitmap.PixelHeight); 
     destData.CopyTo(squareBitmap.Pixels, 0); 

     return squareBitmap; 
    } 
+1

이것은 좋은 출발점이었습니다. WriteableBitmap은 이미지를자를 때 사용할 수있는 방법입니다. 내가해야만하는 것은 캡처 된 JPEG를 WriteableBitmap으로 변환 한 다음 자르기가 끝나면 다시 JPEG 스트림으로 변환하고 ISO에 저장하는 것입니다. – loyalpenguin

+0

이 솔루션은 내 응용 프로그램에 유용하지만 일부 사진에서는'ArgumentOutOfRangeException'이 표시됩니다. 특별히 pixelheight가 640이고 pixelWidth가 480 인 사진, pixelheight가 600 인 다른 사진의 경우 그리고'pixelWidth'는 800입니다, 그것은 어떤 이유로 든 잘 작동하고 있습니까? 그리고이 예외를 피하는 방법? – Debhere

+0

새로운 너비와 높이에 대해 가장 작은 크기를 사용해야합니다. int newsize = (srcBitmap.PixelHeight Jon

관련 문제