এই প্রশ্নটি বিশ্রামে রাখা হয়েছে বলে মনে হয়, তবে এমন সমাধানের সন্ধানের জন্য যা আমি আরও সহজেই বুঝতে পারি (এবং সুইফটে লিখিত), আমি এটি পৌঁছে দিয়েছি (এটিও পোস্ট করেছেন: ইউআইআইমেজ ক্রপ করবেন কীভাবে? )
আমি একটি অনুপাতের উপর ভিত্তি করে একটি অঞ্চল থেকে ফসল তুলতে সক্ষম হতে চেয়েছি এবং বাইরের সীমানা সীমার ভিত্তিতে আকারে স্কেল করতে পেরেছি। এখানে আমার প্রকরণ:
import AVFoundation
import ImageIO
class Image {
class func crop(image:UIImage, crop source:CGRect, aspect:CGSize, outputExtent:CGSize) -> UIImage {
let sourceRect = AVMakeRectWithAspectRatioInsideRect(aspect, source)
let targetRect = AVMakeRectWithAspectRatioInsideRect(aspect, CGRect(origin: CGPointZero, size: outputExtent))
let opaque = true, deviceScale:CGFloat = 0.0 // use scale of device's main screen
UIGraphicsBeginImageContextWithOptions(targetRect.size, opaque, deviceScale)
let scale = max(
targetRect.size.width / sourceRect.size.width,
targetRect.size.height / sourceRect.size.height)
let drawRect = CGRect(origin: -sourceRect.origin * scale, size: image.size * scale)
image.drawInRect(drawRect)
let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return scaledImage
}
}
আমি কয়েকটি বিভ্রান্তিকর বিষয় পেয়েছি যা ফসল কাটা এবং পুনরায় আকার দেওয়ার পৃথক উদ্বেগ। ক্রপিংটি আপনি আঁকারআইনরেটকে পাস করে এমন রেকটটির উত্স দিয়ে পরিচালনা করা হয় এবং আকারটি স্কেলিং পরিচালনা করা হয়। আমার ক্ষেত্রে, উত্সের ক্রপিং রেক্টের আকার এবং একই দিক অনুপাতের আমার আউটপুট রেক্টের সাথে আমার সম্পর্কিত হওয়া দরকার। স্কেল ফ্যাক্টরটি তারপরে আউটপুট / ইনপুট হয় এবং এটি ড্রআরেক্টে প্রয়োগ করা প্রয়োজন (অঙ্কনরেটকে পাস করা হয়েছে)।
একটি সতর্কতাই হ'ল এই পদ্ধতিটি কার্যকরভাবে ধরে নিয়েছে যে আপনি যে চিত্রটি আঁকছেন তা চিত্রের প্রসঙ্গে larger আমি এটি পরীক্ষা করেছি না, তবে আমি মনে করি আপনি ক্রপিং / জুমিং পরিচালনা করতে এই কোডটি ব্যবহার করতে পারেন তবে স্কেল প্যারামিটারটিকে স্পষ্টভাবে সংজ্ঞায়িত করে উপরোক্ত স্কেল প্যারামিটার হিসাবে গণ্য করতে পারেন। ডিফল্টরূপে, ইউআইকিট স্ক্রিন রেজোলিউশনের ভিত্তিতে একটি গুণক প্রয়োগ করে।
অবশেষে, এটি লক্ষ করা উচিত যে এই ইউআইকিট পদ্ধতিরটি কোরিগ্রাফিক্স / কোয়ার্টজ এবং কোর চিত্রের পদ্ধতির চেয়ে উচ্চতর স্তর এবং এটি চিত্র ওরিয়েন্টেশন সম্পর্কিত সমস্যাগুলি পরিচালনা করছে বলে মনে হচ্ছে। এটি এখানেও উল্লেখযোগ্য যে এটি বেশ দ্রুত, ইমেজআইওর পরে দ্বিতীয়, এখানে এই পোস্ট অনুসারে: http://nshipster.com/image-resizing/