[英]How do I convert a UIImage to NSData or CFDataRef?
如何將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 *imageData = UIImageJPEGRepresentation(image, 1.0);
並簡單地將 imageData 轉換為CFDataRef
CFDataRef = (CFDataRef) imageData;
對於那些想知道NSData
和CFData
之間有什么區別的CFData
,這里是Apple Docs的解釋:
CFData 與其 Cocoa Foundation 的對應方 NSData “免費橋接”。 這意味着 Core Foundation 類型在函數或方法調用中可以與橋接的 Foundation 對象互換。 換句話說,在一個方法中,你看到一個 NSData * 參數,你可以傳入一個 CFDataRef,而在一個函數中,你看到一個 CFDataRef 參數,你可以傳入一個 NSData 實例。 這也適用於 NSData 的具體子類。 有關免費橋接的更多信息,請參閱免費橋接類型。
這解釋了為什么將NSData
為CFData
有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.