2008-11-02 7 views
58

मैं UIImageNSData से ऑब्जेक्ट लोड करने की कोशिश कर रहा हूं, और नमूना कोड NSImage पर था, मुझे लगता है कि वे वही होना चाहिए। लेकिन अभी छवि को लोड कर रहा है, मैं सोच रहा हूं कि UIImage लोडिंग NSData समस्या का निवारण करने के लिए सबसे अच्छा क्या है।एनएसडीटा और यूआईएममेज

उत्तर

43

UIImage में initWithData: विधि है। दस्तावेज़ों से: "डेटा पैरामीटर में डेटा को सिस्टम के समर्थित छवि प्रकारों में से किसी एक के फ़ाइल प्रारूप से मेल खाने के लिए स्वरूपित किया जाना चाहिए।"

+0

हाँ, कि मैं क्या उपयोग कर रहा हूँ है । एनएसडीटा के पास पता है, जबकि कॉल के बाद UIImaeg -initWithData: डेटा, बिंदु 0 हो गया। मुझे यकीन नहीं है कि त्रुटि संदेश कहां देखना है। – BlueDolphin

3

डेटा NSData ऑब्जेक्ट होना चाहिए जिसमें पहले से ही डेटा है। NSData ऑब्जेक्ट को उपयोग करने से पहले फ़ाइल लोडिंग/डाउनलोड करने की आवश्यकता है। आप डेटा पर NSLog का उपयोग करके इसका निरीक्षण कर सकते हैं और देख सकते हैं कि इसमें वैध डेटा है या नहीं।

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

मैं UIImageJPEGRepresentation() से पहले की कोशिश नहीं की है, लेकिन UIImagePNGRepresentation मेरे लिए ठीक काम करता है, और NSData और UIImage के बीच रूपांतरण मृत सरल है

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

NSdata के लिए एक छवि परिवर्तित करने के लिए इस प्रयास करें::

0

कोड के सुरक्षित निष्पादन के लिए, डेटा के साथ ब्लॉक को छोड़ दें, कार्य के रूप में UIImagePNGRepresentation रिटर्न, वैकल्पिक मान।

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

नोट: डाटा स्विफ्ट 3 वर्ग है।

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... 
    } 
} 

एक्सटेंशन का उपयोग कर द्वारा:: स्विफ्ट 3

जेनेरिक छवि परिचालन (& जेपीजी दोनों png की तरह) के साथ NSData के बजाय डेटा उपयोग

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... 
    } 
} 
संबंधित मुद्दे