2008-11-02 85 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... 
    } 
}