如何将UIImage转换为NSData或CFDataRef?

时间:2011-10-31 01:03:28

标签: iphone ios uiimage

如何将UIImage转换为NSDataCFDataRef?我需要将CFDataRef传递给ABPersonSetImageData

4 个答案:

答案 0 :(得分:19)

这对我来说对于PNG图像很有用。对于其他图像类型,我假设您只需要找到相应的UIImage ...表示方法。

UIImage *image = [UIImage imageNamed:@"imageName.png"];
NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)];

如果你需要一个用于UIImage的CFDataRef,它只是一行。

CFDataRef imgDataRef = (CFDataRef)imageData;

答案 1 :(得分:7)

你可以用这个

NSData *imageData = UIImageJPEGRepresentation(image, 1.0);

并简单地将imageData转换为CFDataRef

CFDataRef = (CFDataRef) imageData;

答案 2 :(得分:1)

CFDataRef cfdata = CFDataCreate(NULL, [imageData bytes], [imageData length]);

有关工作示例,请点击here

谢谢。

答案 3 :(得分:0)

对于那些想知道 NSDataCFData 之间有什么区别的人,这里是 Apple Docs 的解释:

<块引用>

CFData 与 Cocoa Foundation 的同行“免费桥接”, NSData。这意味着核心基础类型是 可在函数或方法调用中与桥接互换 基金会对象。换句话说,在您看到 NSData 的方法中 * 参数,您可以传入一个 CFDataRef,并且在您看到 CFDataRef 参数的函数中,您可以传入一个 NSData 实例。这 也适用于 NSData 的具体子类。请参阅免费桥接 有关免费桥接的详细信息的类型。

这解释了为什么将 NSData 转换为 CFData 有效。