2011-04-13 7 views
3

바이트 배열에 포함 된 이미지로 NSImageView에 이미지를 표시하려고합니다. 어떻게해야합니까? 내가 이해하는 바에 따르면, 내 바이트 []를 NSData 변수로 변환하고 NSImage로 피드해야합니다. 이 올바른지? 어떻게해야합니까?바이트 배열의 NSImage

주조 :

NSData bytesAsMacVariable = (NSData) imageAsBytes; 

나는 다음과 같은 시도 ... 나는 캐스팅을 시도하고 그 작동하지 않습니다, 그리고 어떤 변환이 내장 될 수없는 것 또한 시도했습니다

NSData bytesAsMacVariable = imageAsBytes as NSData; 

마지막으로 NSData 인 것처럼 바이트 []을 전달하려고했습니다. 이들의

NSImage imageToShow = new NSImage(imageAsBytes); 

없음까지 내가 볼 수있는 일을하지 않고, 것, NSImage 또는을 NSData도 당신은 객체로 캐스팅하고 [] 변환으로 바이트 받아들이는 멤버 함수 ...

+1

당신이 시도한 코드를 귀하의 질문을 편집하고 붙여주세요. 일반적으로 당신이 설명한 것은 정확합니다. –

+0

거기에 예제가 추가되었습니다. –

답변

3

있다 형식이지만, 포인터를 오브젝트 유형으로 변환해야합니다.
는 포인터가 매우 중요하다 더

NSData *imageData = [NSData dataWithBytes:byteArray length:arrayLength]; 
NSImage *image = [[NSImage alloc] initWithData:imageData]; 
[imageView setImage:image]; 
[image release]; 

같은 것을보십시오.

+1

@Robin 또한 바이트 배열이 사라지지 않을 것이라는 것을 보장한다면 NSData'' ... WithBytesNoCopy :'메소드 중 하나를 사용하여 NSData를 최적화 할 수 있습니다. - 그리고 아마도 'NSImage'가 아마도 NSData로부터 데이터를 복사하기 때문에 'byteArray'가 지속되지 않더라도 괜찮을 것입니다. – Richard

+0

아, 고맙습니다. +1 –

2

이 같은 NSMutableData를 사용할 수 있습니다

new NSImage (new NSMutableData (imageAsBytes)); 
+0

개념적으로, 제가 게시 한 것과 같은 내용이지만, 유효하고 의미있는 구문은 어디에 사용하고 있습니까? – Richard

+0

질문은 monomac과 cocoa/mac 개발을위한 모노 바인딩이라는 태그가 붙어 있습니다. 원본 구문은 C#입니다. – mkestner

+1

'new NSMutableData (imageAsBytes)'는 바이트를 복사하거나 적절한 위치에서 사용합니까? – Richard