从UIImage获取底层NSData *
我可以使用[UIImage imageWithdata:]或[UIImage initWithData]方法从NSData创buildUIImage。 
 我想知道是否可以从现有的UIImage *获得NSData *? 
  NSData* myData = [myImage getData]; 
 这是不可能的吗? 
 谢谢 
 NSData *imageData = UIImageJPEGRepresentation(image, 0.7); // 0.7 is JPG quality 
要么
 NSData *imageData = UIImagePNGRepresentation(image); 
取决于您是否想要PNG格式或JPG格式的数据。
只是因为我偶然发现,我喜欢迅速:)
这是Caroiline的post的快速翻译。
 var imageData = UIImagePNGRepresentation(image) 
要么
 var imageData = UIImageJPEGRepresentation(image, 0.7) 
 你可以预期UIImage是一个格式化显示对象,所以不会使用原始数据(可能是PNG或JPEG格式),但更可能是一个像素数组或其他一些内部格式。 换句话说, UIImage(data: foo)不会保留foo 。 
- 
如果你只是想在你的程序中的其他地方使用它,原来的UIImage将会很好(我认为在这里并不是这样) 
- 
如果你想序列化, UIImagePNGRepresentation(...)将工作,但如果原始是一个JPEG将会过大;UIImageJPEGRepresentation(...)通常会导致稍微超大的数据,并且如果您的原始文件是PNG,则会有点损失。 根据图像的显示方式和期望提供的格式来select一个应该是可以的。 如果您恰好在使用PNG并希望使用PNG,则应该获得一个很好的文件大小和几乎相同的数据,除了特殊的PNG块。
- 
如果您想获得原始数据的精确副本(可能是在缩略图之后保存文件或将其保存到SHA1),则需要单独保留该文件。 你可能会这样做: var image:UIImage var imageData:NSData { didSet { image = UIImage(data: imageData) } }
自从上面的答案给出以来,事情已经发生了变化,对于那些仍然在寻找,因为他们共享CipherCom的担忧:iOS 5已经添加了CIImage属性 。