2011-04-13 41 views
3

我試圖在NSImageView中顯示一個圖像,圖像包含在一個Byte數組中。我怎樣才能做到這一點?根據我的理解,我需要將我的byte []轉換爲NSData變量並將其提供給NSImage。它是否正確?我該怎麼做?我試過鑄造和不工作,似乎沒有被任何轉換建於...來自字節數組的NSImage

我曾嘗試以下:

鑄造:

NSData bytesAsMacVariable = (NSData) imageAsBytes; 

也試過

NSData bytesAsMacVariable = imageAsBytes as NSData; 

最後,試圖傳遞一個字節[],就好像它是一個NSData。

NSImage imageToShow = new NSImage(imageAsBytes); 

這些都不將工作,並就我所看到的,既不NSImage中或NSData的具有接受字節[轉換]你鑄造對象的成員函數...

+1

請編輯您的問題,並貼上你試過的代碼。一般來說,你所描述的是正確的。 – 2011-04-13 06:46:50

+0

那裏,增加的例子。 – 2011-04-13 20:29:22

回答

3

類型,但是您應該投射到指針到對象類型。
嘗試更多的東西一樣

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

的指針是非常重要的。

+1

@Robin還指出,如果字節數組保證不會消失,那麼可以使用'NSData'' ... WithBytesNoCopy:'方法之一來優化NSData。 - 即使'byteArray'不會持久,這裏也可能是好的,因爲'NSImage'可能會將數據從'NSData'中複製出來。 – Richard 2011-04-14 15:47:04

+0

啊,感謝您的領導:) +1 – 2011-04-16 10:18:42

2

您可以使用NSMutableData,像這樣:

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

從概念上講,我發佈的是同樣的東西,但是您使用哪種語言,哪裏纔是有效且有意義的語法? – Richard 2011-04-17 13:00:41

+0

這個問題被標記爲monomac和cocoa,這是可可/ mac開發的單一綁定。源語法是C#。 – mkestner 2011-05-03 14:17:10

+1

'新的NSMutableData(imageAsBytes)'將複製字節或就地使用它們? – Richard 2011-05-03 15:46:17