जवाबों:
NSData *imageData = UIImageJPEGRepresentation(image, 0.7); // 0.7 is JPG quality
या
NSData *imageData = UIImagePNGRepresentation(image);
निर्भर करता है कि आप अपना डेटा पीएनजी फॉर्मेट या जेपीजी फॉर्मेट में चाहते हैं।
जब किसी UIImage
ऑब्जेक्ट को इनिशियलाइज़ किया जाता है init(data: originalData)
, तो originalData
उसे किसी प्रकार के आंतरिक प्रारूप में कच्चे डेटा में बदल दिया जाएगा। इन आंकड़ों को बाद में प्राप्त किया जा सकता है
let rawData = myImage.cgImage?.dataProvider?.data as Data?
हालाँकि क्योंकि rawData
यह कच्चा है, इसलिए उपयोग करने पर यह और भी बड़ा होने वाला है UIImagePNGRepresentation
।
आप उम्मीद कर सकते हैं कि एक UIImage प्रदर्शन के लिए स्वरूपित एक वस्तु है और इसलिए मूल डेटा (जो शायद PNG या JPEG प्रारूप में है) का उपयोग नहीं किया जाएगा, लेकिन अधिक संभावना है कि पिक्सेल सरणी या कुछ अन्य आंतरिक प्रारूप। दूसरे शब्दों में, UIImage(data: foo)
बरकरार नहीं रहेगा foo
।
यदि आप इसे अपने कार्यक्रम में कहीं और उपयोग करना चाहते हैं, तो मूल UIImage ठीक करेगा (मुझे लगता है कि वास्तव में मामला नहीं है)
यदि आप क्रमबद्ध करना चाहते हैं, UIImagePNGRepresentation(...)
तो काम करेंगे लेकिन यदि जेपीईजी मूल था तो इसकी देखरेख की जाएगी; UIImageJPEGRepresentation(...)
अगर आपका मूल पीएनजी था तो अक्सर थोड़ा ओवरसाइज़ डेटा होगा और थोड़ा नुकसान होगा। जिस तरह से छवि प्रदर्शित की जाएगी और जिस प्रारूप को आप प्रदान करने की अपेक्षा करते हैं, उसके आधार पर इसे चुनना ठीक होगा। यदि आप PNG का उपयोग कर रहे हैं और PNG को बाहर करना चाहते हैं, तो आपको एक अच्छा फ़ाइल आकार और लगभग समान डेटा, विशेष PNG बंक्स को अलग करना चाहिए।
यदि आप मूल डेटा की एक सटीक प्रतिलिपि प्राप्त करना चाहते हैं (शायद थंबनेल के बाद एक फ़ाइल को बचाने के लिए, या इसे SHA1 करने के लिए), तो आपको इसे अलग से बनाए रखने की आवश्यकता है। आप ऐसा कुछ कर सकते हैं:
var image:UIImage
var imageData:NSData {
didSet {
image = UIImage(data: imageData)
}
}
स्विफ्ट 4.2
let dataPng = image.pngData() // return image as PNG. May return nil if image has no CGImageRef or invalid bitmap format
let dataJpg = image.jpegData(compressionQuality: 1) // return image as JPEG. May return nil if image has no CGImageRef or invalid bitmap format. compression is 0(most)..1(least)
उपरोक्त उत्तर दिए जाने के बाद से चीजें बदल गई हैं, क्योंकि वे अभी भी तलाश कर रहे हैं क्योंकि वे CipherCom की चिंता को साझा करते हैं: iOS 5 ने CIIPage संपत्ति को जोड़ा है ।
CIImage
केवल तभी सेट की जाती है जब इसके साथ आरंभ किया गया हो imageWithCIImage:
। इसके अलावा यह सीधे इस्तेमाल किए गए डेटा नहीं है, बल्कि एक अन्य छवि प्रतिनिधित्व वस्तु है।
UIImageJPEGRepresentation
या डेटाUIImagePNGRepresentation
को बदल देगा और एक पुनर्निर्माण करेगा। क्या वास्तव में हासिल करने के लिए कोई रास्ता है?