मैं ALAsset उपयोग कर रहा हूँ ऐसे ही छवियों को पुनः प्राप्त करने:आईओएस पर एलासेट छवि को डिस्क पर तेजी से कैसे सहेजना है?
[[asset defaultRepresentation] fullResolutionImage]]
यह वापसी CGImageRef जो मैं जितनी जल्दी संभव के रूप में डिस्क पर सहेजना चाहते ...
समाधान 1:
UIImage *currentImage = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullResolutionImage]];
NSData *currentImageData = UIImagePNGRepresentation(currentImage);
[currentImageData writeToFile:filePath atomically:YES];
समाधान 2:
CFURLRef url = (__bridge CFURLRef)[NSURL fileURLWithPath:filePath];
CGImageDestinationRef destination = CGImageDestinationCreateWithURL(url, kUTTypePNG, 1, NULL);
CGImageDestinationAddImage(destination, [[asset defaultRepresentation] fullResolutionImage], nil);
CGImageDestinationFinalize(destination);
समस्या यह है कि दोनों विधियां हैं एक डिवाइस पर बहुत धीमी प्रदर्शन। मुझे यह करने के लिए प्रति छवि लगभग 2 सेकंड लगते हैं। और यह बिल्कुल लंबा है।
प्रश्न: मैं इस छवि बचत प्रक्रिया को कैसे बढ़ा सकता हूं? या शायद इसके लिए एक बेहतर समाधान है?
अद्यतन: दोनों समाधानों में सर्वोत्तम प्रदर्शन सुधार छवियों को पीएनजी के बजाय जेपीईजी प्रारूप में सहेजना है। तो समाधान 1 के लिए UIImagePNGRepresentation
को UIImageJPEGRepresentation
के साथ बदल दिया गया है। समाधान 2 के लिए kUTTypeJPEG
के साथ बदल दिया है।
यह भी ध्यान देने योग्य है कि दूसरा समाधान तरीका है कि पहले मेमोरी कुशल है।
मैं इसे समझता हूं। लेकिन क्या ऐसा करने के लिए कोई और अधिक कुशल तरीका है? मुझे पीएनजी की जरूरत नहीं है। असल में कोई प्रारूप ठीक है। मुझे सिर्फ मूल छवि को एलासेट से अपने कस्टम फ़ोल्डर में कॉपी करने की आवश्यकता है ...? धन्यवाद –
क्या आपने UIImageJPEGRepresentation की कोशिश की है? –
मैंने अभी जेपीईजी प्रतिनिधित्व के साथ प्रयास किया - यह पीएनजी प्रतिनिधित्व से लगभग एक आधा तेज है (अभी भी लगभग 1 सेकंड)। यह काफी बेहतर है। लेकिन अभी भी मुझे उम्मीद नहीं है। क्या कुछ और है? प्रश्न में पोस्ट किए गए दोनों समाधानों के बीच अंतर के बारे में क्या। क्या किसी और पर कोई फायदे हैं? –