从NSString数据填充NSImageView框

时间:2013-04-13 15:29:17

标签: objective-c image cocoa

我是Objective C的新手,我一直在寻找谷歌寻找解决方案的数小时。

我有一个看起来像

的NSString
273350/364D4D002A00041EB8F1E0CEF1E0CCF1E0CCF1E0CCF1E0CCF etc etc

指的是TIFF图像(我猜是某种RAW字符串格式),我想用数据填充NSImageView。

这是我到目前为止所尝试的:

NSData *picdata = [NSData dataWithBytes:[albumArtStr UTF8String] length:[albumArtStr length]];
NSImage *myPicture = [[NSImage alloc] initWithData:picdata];
[_albumArtCell setImage:myPicture];

其中“albumArtCell”是NSImageView

2 个答案:

答案 0 :(得分:1)

我认为问题是由于[albumArtStr length]返回“unicode character”的数量,而不是“bytes”的数量。

因此,您的NSData可能没有设置为正确的大小,因此没有正确的格式来正确解码UIImage。

尝试使用NSString实例创建NSData:

NSData* picData = [albumArtStr dataUsingEncoding: NSUTF8StringEncoding];

答案 1 :(得分:1)

该数据看起来像前面有长度的十六进制编码图像,而不是未编码的TIFF,这是一种标记的二进制格式。也许您需要在斜杠前删除数字,并将字符串的其余部分从十六进制数字解码为NSData,然后使用该决定数据调用[[NSImage alloc] initWithData]

在将其交给NSImage之前,您需要将其解码为二进制文件,因为它只能理解TIFF的原始二进制形式。