【发布时间】:2011-10-31 01:03:27
【问题描述】:
如何将UIImage 转换为NSData 或CFDataRef?我需要将CFDataRef 传递给ABPersonSetImageData。
【问题讨论】:
如何将UIImage 转换为NSData 或CFDataRef?我需要将CFDataRef 传递给ABPersonSetImageData。
【问题讨论】:
这对我有用,适用于 PNG 图像。对于其他图像类型,我假设您只需要找到相应的 UIImage...Representation 方法即可。
UIImage *image = [UIImage imageNamed:@"imageName.png"];
NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)];
如果您需要 UIImage 的 CFDataRef,只需多一行。
CFDataRef imgDataRef = (CFDataRef)imageData;
【讨论】:
+[NSData dataWithData:]?
NSData *imageData = UIImagePNGRepresentation(image);
你可以用这个
NSData *imageData = UIImageJPEGRepresentation(image, 1.0);
只需将 imageData 转换为 CFDataRef
CFDataRef = (CFDataRef) imageData;
【讨论】:
【讨论】:
对于那些想知道NSData和CFData有什么区别的人,这里是Apple Docs的解释:
CFData 与其 Cocoa Foundation 对应物“免费桥接”, NS 数据。这意味着核心基础类型是 与桥接的函数或方法调用可互换 基础对象。换句话说,在您看到 NSData 的方法中 * 参数,你可以传入一个 CFDataRef,在你看到 CFDataRef 参数的函数中,你可以传入一个 NSData 实例。这 也适用于 NSData 的具体子类。请参阅免费桥接 有关免费桥接的更多信息的类型。
这解释了为什么将 NSData 转换为 CFData 有效。
【讨论】: