2013-06-11 2 views
1

API를 사용 중이고 메소드가 이미지를 메모리 스트림에 저장하는 작업을 수행하지만 해당 메소드의 반환 값은 메모리 스트림에 대한 정수 포인터 및 크기 값입니다. C#은 포인터를 사용하여 C 스타일의 메모리 조작을 지원합니까?C#에서 int 포인터에서 메모리 스트림으로 데이터를 가져 오는 방법은 무엇입니까?

어떻게 이미지를 메모리 포인터에서 가져 와서 파일 스트림에 저장하거나 파일로 저장할 수 있습니까? 어떤 사람은 이것에 대한 어떤 조언을 참조 할 수 있습니까?

+1

코드가 스트림을 사용한다는 것을 알고 있다면 돌아 오는 것은 사실 int *입니다. 훨씬 더 가능성이 인터페이스 포인터, 같은 IStream *. 우리는 단지 그것을 추측 할 수 있습니다. 공급 업체에 문의하십시오. * 알고 * 있습니다. –

+0

@HansPassant 당신이 옳았다. 포인터가 리턴되었는데, 왜 그들이 대신 Integer를 리턴했는지 모른다. 감사합니다 – Dexters

답변

5

는이 같은 메모리 스트림을 읽을 수 있습니다

using (System.IO.UnmanagedMemoryStream memoryStream = new UnmanagedMemoryStream(pointer, length, length, FileAccess.Read)) 
{ 
    byte[] imageBytes = new byte[length]; 
    memoryStream.Read(imageBytes, 0, length); 
} 

그런 다음 당신이 필요로하는 어떤 새로운 이미지 또는를 만들 수있는 바이트를 구문 분석합니다.

+0

+1하지만, 조금 더 설명해 드리겠습니다 :) :) –

+0

안녕하세요 고맙습니다 .. 나는 그것을 추출 할 수 있었지만 코드를 안전하지 않게 만들고 (byte *)에 정수를 형 변환해야했습니다. 그것을 읽을 수 있습니다. 하지만이 문제가 하나 있습니다 - 아래 – Dexters

+0

스트림 하나의 페이지 tiff 이미지가 있습니다. 파일에 쓸 때 이미지 파일을 파일에서 볼 수 있지만 연속 루프에서 파일을 쓰면 파일이 더 많이 쓰여지고 쓰다가 다중 페이지 tif 파일로 표시되지 않습니다. 열 때 첫 페이지 만 보여줍니다. 어떤 아이디어? – Dexters