2011-08-22 21 views
19

मैंने आईओएस संस्करण 4 से संदर्भ में पढ़ा है। + UIImage ऑब्जेक्ट के साथ, फ़ाइल एक्सटेंशन की आवश्यकता नहीं है।जेपीजी छवि यूआईएममेज छवि के साथ लोड नहीं होती है

विशेष ध्यान:

UIImage वर्ग संदर्भ से

आईओएस 4 और बाद में, फ़ाइल का नाम फ़ाइल नाम एक्सटेंशन निर्दिष्ट करने की आवश्यकता नहीं है। आईओएस 4 से पहले, आपको फ़ाइल नाम एक्सटेंशन निर्दिष्ट करना होगा।

लेकिन ऐसा लगता है कि यह केवल पीएनजी फाइलों के साथ काम करता है।

अगर मेरे कोड है: केवल

[UIImage imageNamed:@"test"]; 
  • छवि लोड करता है, तो फ़ाइल test.png
  • छवि है अगर यह test.jpg है लोड नहीं करता है।

क्योंकि मैं एक गतिशील छवि लोड हो रहा है (मैं कार्यावधि में पता नहीं है, तो छवि मैं लोड करना चाहते हैं png या jpg है) बनाए रखने की जरूरत मेरे लिए यह एक बड़ी समस्या है।

क्या आप मेरी मदद कर सकते हैं?
धन्यवाद।

+0

क्या कोई उत्तर आपकी मदद करता है? –

उत्तर

0

यदि आपके पास इन ऐप्स को आपके ऐप में बंडल किया गया है, तो आपको उनके एक्सटेंशन पता होना चाहिए।

यदि आप उन्हें ऑनलाइन स्रोत से प्राप्त कर रहे हैं और आपके पास उन्हें NSData के रूप में है, तो आप इस कोड का उपयोग इस प्रकार निर्धारित करने के लिए कर सकते हैं।

+ (NSString *)contentTypeForImageData:(NSData *)data { 
    uint8_t c; 
    [data getBytes:&c length:1]; 

    switch (c) { 
    case 0xFF: 
     return @"image/jpeg"; 
    case 0x89: 
     return @"image/png"; 
    case 0x47: 
     return @"image/gif"; 
    case 0x49: 
    case 0x4D: 
     return @"image/tiff"; 
    } 
    return nil; 
} 

this प्रश्न में शीर्ष जवाब के अनुसार।

2

नवीनतम डेवलपर संदर्भ राज्यों सूचना के लापता टुकड़ा:

विशेष ध्यान आईओएस 4 पर और बाद में, यदि फ़ाइल PNG प्रारूप में है, यह आवश्यक नहीं है .PNG फ़ाइल नाम एक्सटेंशन निर्दिष्ट करने के लिए है। आईओएस 4 से पहले, आपको फ़ाइल नाम एक्सटेंशन निर्दिष्ट करना होगा।

पुस्तकालय पीएनजी को विशेष उपचार देने का एक संभावित कारण यह है कि आईओएस हार्डवेयर पीएनजी के लिए अनुकूलित किया गया है। एप्लिकेशन बंडल में संग्रहीत पीएनजी छवियों को एक्सकोड द्वारा अनुकूलित किया जाता है, जो आईएनजी डिवाइस के ग्राफिक्स चिप से मेल खाने के लिए पीएनजी छवियों के बाइट ऑर्डर को बदलता है। (यह प्रश्न देखें: Is PNG preferred over JPEG for all image files on iOS?)।

यदि आप जानते हैं कि आपके पास केवल पीएनजी या जेपीजी होगा, तो वैकल्पिक समाधान नीचे दिए गए अनुसार यूआईएममेज पर एक श्रेणी बनाना है।

- (UIImage*) jgcLoadPNGorJPGImageWithName:(NSString*)name { 
    UIImage * value; 
    if (nil != name) { 
     value = [UIImage imageNamed:name]; 
     if (nil == value) { 
      NSString * jpgName = [NSString stringWithFormat:@"%@.jpg", name]; 
      value = [UIImage imageNamed:jpgName]; 
     } 
    } 
    return value; 
} 
संबंधित मुद्दे