字节数组转换为NSImage

4
我想在NSImageView中显示一个图像,该图像包含在一个字节数组中。我该怎么做?据我所知,我需要将我的byte[]转换为NSData变量,并将其提供给NSImage。是这样吗?我该如何做?我已经尝试过强制类型转换,但那并不起作用,也没有任何内置的转换...
我尝试过以下方法:
强制类型转换:
NSData bytesAsMacVariable = (NSData) imageAsBytes;

也尝试过

NSData bytesAsMacVariable = imageAsBytes as NSData;

最后,尝试将byte[]作为NSData传递。

NSImage imageToShow = new NSImage(imageAsBytes);

这些方法都不可行,据我所知,NSImage和NSData都没有接受byte[]进行转换的成员函数...


1
请编辑您的问题并粘贴您尝试过的代码。总的来说,您所描述的是正确的。 - user557219
2个回答

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

3
您可以使用NSMutableData来实现,方法如下:
new NSImage (new NSMutableData (imageAsBytes));

从概念上讲,那与我发布的内容相同,但你使用的是哪种语言,其中这是有效和有意义的语法? - Richard
该问题被标记为monomac和cocoa,这是用于cocoa/mac开发的mono绑定。源语法是C#。 - mkestner
1
new NSMutableData(imageAsBytes)会复制字节还是原地使用它们? - Richard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接