我是Objective C的新手,我一直在寻找谷歌寻找解决方案的数小时。
我有一个看起来像
的NSString273350/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
答案 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的原始二进制形式。