2013-04-13 110 views
0

我对Objective C非常陌生,我一直在Google上搜索几个小时,试图找到解决方案。从NSString数据填充NSImageView框

我有一个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

+1

那么在这之后发生了什么? –

+0

ImageView保持为空:(我不认为有一种方法可以测试'myPicture'设置是否正确! – Jordan

+0

我认为[this](http://stackoverflow.com/questions/7343814/drawing-nsstring -to-uiimage)可以帮助您 –

回答

1

即数据看起来像十六进制编码的图像与在其前面的长度,而不是一个未编码的TIFF,它是一个标记的二进制格式。也许你需要去掉斜杠前的数字,并将字符串的其余部分从十六进制数字解码到NSData中,然后使用决定的数据调用[[NSImage alloc] initWithData]

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

1

我相信这个问题是由于这样的事实:[albumArtStr length]返回“Unicode字符的数量“,而不是”字节数“。

所以你的NSData可能没有被设置为正确的大小,所以没有正确解码UIImage的格式。

尝试此代替从NSString的实例来创建的NSData:

NSData* picData = [albumArtStr dataUsingEncoding: NSUTF8StringEncoding];