2008-11-02 54 views
58

我想加载UIImage对象NSData,示例代码是NSImage,我猜他们应该是一样的。但现在刚刚加载图像,我想知道什么是最好的解决UIImage加载NSData问题。NSData和UIImage

回答

43

UIImage有一个 - initWithData:方法。从文档:“数据参数中的数据必须格式化以匹配系统支持的图像类型之一的文件格式。”

+0

是的,那是我在用。 NSData具有地址,而在调用UIImaeg -initWithData:theData之后,该点变为0.我不确定在哪里看到错误消息。 – BlueDolphin 2008-11-03 00:24:22

3

该数据应该是一个已经包含数据的NSData对象。在使用它之前,您需要将文件加载/下载到NSData对象。您可以通过在数据上使用NSLog来检查它是否包含有效数据。

105

我没有尝试UIImageJPEGRepresentation()过,但UIImagePNGRepresentation对我的作品的罚款,并转换NSDataUIImage之间是死的简单:

NSData *imageData = UIImagePNGRepresentation(image); 
UIImage *image=[UIImage imageWithData:imageData]; 
21

尝试使用此方法将图像转换为NSData的:

UIImage *img = [UIImage imageNamed:@"image.png"]; 
NSData *data1 = UIImagePNGRepresentation(img); 
0

为了安全地执行代码,使用带数据的if-let块,作为函数UIImagePNGRepresentation返回可选值。

if let img = UIImage(named: "Hello.png") { 
    if let data:Data = UIImagePNGRepresentation(img) { 
     // Handle operations with data here...   
    } 
} 

注:数据是斯威夫特3类。使用数据,而不是NSData的与 斯威夫特3个

通用图像操作(如png格式& JPG两种):

if let img = UIImage(named: "Hello.png") { 
     if let data:Data = UIImagePNGRepresentation(img) { 
       handleOperationWithData(data: data)  
     } else if let data:Data = UIImageJPEGRepresentation(img, 1.0) { 
       handleOperationWithData(data: data)  
     } 
} 

******* 
func handleOperationWithData(data: Data) { 
    // Handle operations with data here... 
    if let image = UIImage(data: data) { 
     // Use image... 
    } 
} 

通过使用扩展:

extension UIImage { 

    var pngRepresentationData: Data? { 
     return UIImagePNGRepresentation(img) 
    } 

    var jpegRepresentationData: Data? { 
     return UIImageJPEGRepresentation(self, 1.0) 
    } 
} 

******* 
if let img = UIImage(named: "Hello.png") { 
     if let data = img.pngRepresentationData { 
       handleOperationWithData(data: data)  
     } else if let data = jpegRepresentationData { 
       handleOperationWithData(data: data)  
    } 
} 

******* 
func handleOperationWithData(data: Data) { 
    // Handle operations with data here... 
    if let image = UIImage(data: data) { 
     // Use image... 
    } 
}