0

我对Objective C非常陌生,我已经在Google上搜索了几个小时试图找到解决方案。

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

4

2 回答 2

1

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

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

试试这个,而不是从 NSString 实例创建一个 NSData :

NSData* picData = [albumArtStr dataUsingEncoding: NSUTF8StringEncoding];
于 2013-04-13T16:36:41.000 回答
1

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

您需要先将其解码为二进制,然后再将其发送给它,NSImage因为它只理解 TIFF 的原始二进制形式。

于 2013-04-14T11:21:37.013 回答