2011-10-17 2 views
2

BitmapSource를 만들려는 바이트 픽셀의 2D 배열이 있습니다. BitmapSource.Create()에 1D 배열과 스트라이드가 필요하면 2D 배열을 어떻게 통과해야합니까?2D 픽셀 배열을 BitmapSource.Create()에 전달하는 방법은 무엇입니까?

int width = pixels2D.GetLength(1); int height = pixels2D.GetLength(0); 
byte[] pixels1D = new byte [width * height ]; 
Buffer.BlockCopy(pixels2D, 0, pixels1D, 0, pixels1D.Length * sizeof(byte)); 
return BitmapSource.Create(width, height, 96, 96, System.Windows.Media.PixelFormats.Gray8, 
         null, pixels1D, stride: width * sizeof(byte)); 

그러나 이것은 내가 배열 차원의 정의 포장으로 이해 무엇에 의존 :

나의 현재 솔루션은 중간 1D 배열에 복사 BlockCopy을 사용하는 것입니다. 나는 이것을 피하고, 데이터를 복사하지 않는 것이 이상적이다. 감사. 이를 구현하기 위해 세 가지 방법이 있습니다 제가 알기로

답변

1

:;

2) For loop, 또한 효율적이다 pixels1D[i*width+j]pixels2D[i,j]을 복사 효율적이다

1) Block Copy가;

3) Linqpixels2D.Cast<byte>().ToArray() 이것은 간단하지만 느립니다.

+0

코드 스 니펫을 추가 할 수 있다면 더 좋을 것입니다. – senaps

관련 문제