উত্তর:
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(data: foo)
ধরে রাখা হবে না foo
।
আপনি যদি এটি কেবল আপনার প্রোগ্রামের অন্য কোথাও ব্যবহার করতে চান তবে মূল UII छविটি ঠিকঠাক করবে (আমি মনে করি এটি আসলে এখানে নয়)
আপনি যদি সিরিয়াল করতে চান UIImagePNGRepresentation(...)
তবে কাজ করবে তবে মূলটি যদি জেপিইজি হত তবে তা বড় করা হবে; UIImageJPEGRepresentation(...)
আপনার অরিজিনাল পিএনজি হলে প্রায়শই কিছুটা ওভারসাইজ ডেটা হয়ে যায় এবং কিছুটা ক্ষতি হয়। চিত্রটি প্রদর্শিত হবে এবং আপনি যে ফর্ম্যাটটি সরবরাহ করবেন বলে আশা করছেন তার ভিত্তিতে একটি চয়ন করা ঠিক হবে should আপনি যদি পিএনজি ব্যবহার করছেন এবং পিএনজি বের করতে চান তবে আপনার ভাল ফাইলের আকার এবং প্রায় অভিন্ন ডেটা, বিশেষ পিএনজি খণ্ডগুলি আলাদা করে রাখা উচিত।
আপনি যদি মূল ডেটাটির সঠিক অনুলিপি পেতে চান (সম্ভবত থাম্বনেইলিংয়ের পরে কোনও ফাইল সংরক্ষণ করতে পারেন, বা এটি 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)
উপরের উত্তর দেওয়ার পর থেকে জিনিসগুলি পরিবর্তিত হয়েছে, এখনও যারা খুঁজছেন তারা সিফারকমের উদ্বেগকে ভাগ করে নিচ্ছেন: আইওএস 5 সিআইআইমেজ সম্পত্তি যুক্ত করেছে ।
CIImage
তখনই সেট করা থাকে যদি এটি দিয়ে শুরু করা হয়েছিল imageWithCIImage:
। এছাড়াও এটি সরাসরি ব্যবহৃত ডেটা নয় বরং অন্য চিত্রের উপস্থাপনা অবজেক্ট।
UIImageJPEGRepresentation
বাUIImagePNGRepresentation
হবে তথ্য পরিবর্তন এবং একটি reconversion না। যা চেয়েছিল তা অর্জন করার কি কোনও উপায় আছে?