এ https://github.com/vvbogdan/BVCropPhoto
- (ইউআইআইএমেজ *) ক্রপডআইমেজ {
সিজিফ্লোট স্কেল = সেলফসোর্সআইমেজ.সাইজ.উইথ / সেলফস্ক্রোলভিউ.কন্টেন্টসাইজ.উইথ;
ইউআইআইমেজ * ফাইনাল ইমেজ = শূন্য;
সিজিআরেক্ট টার্গেটফ্রেম = সিজিআরেক্টমেক ((স্বতঃস্ক্রোলভিউ। কন্টেন্টআইনসেট.লেফ্ট + সেলফ.স্ক্রোলভিউ.কন্টেন্টঅফসেট.এক্স)) স্কেল,
(স্ব.স্ক্রোলভিউ.কন্টেন্টইনসেট.টপ + সেলফ.স্ক্রোলভিউ। কন্টেন্টঅফসেট.ই) * স্কেল,
self.cropSize.width * স্কেল,
self.cropSize.height * স্কেল);
সিজিআইমেজআরএফ প্রসঙ্গ
যদি (প্রসঙ্গের চিত্র! = নুল) {
ফাইনাল ইমেজ = [ইউআইআইমেজ ইমেজ উইথ সিজি ইমেজ: কনটেক্সট ইমেজ
স্কেল: self.sourceImage.scale
অভিযোজন: UIImageOrientationUp];
CGImageRelease (contextImage);
}
প্রত্যাবর্তন চূড়ান্ত চিত্র;
}
- (UII छवि *) চিত্রবিহীন রোটেশন: (UII छवि *) চিত্র {
যদি (image.imageOrientation == UIImageOrientationUp) চিত্র ফিরে আসে;
সিজিএফাইনট্রান্সফর্ম রূপান্তর = সিজিএফাইনট্রান্সফর্মআইডেন্টিটি;
স্যুইচ (image.imageOrientation) {
কেস ইউআইজিমেজ ওরিয়েন্টেশন ডাউন:
কেসআইআইআইজিওরিয়েন্টেশনডাউন মিররড:
রূপান্তর = সিজিএফাইন ট্রান্সফর্ম ট্রান্সলেট (রূপান্তর, ইমেজ.সাইজ.উইথ, ইমেজ.সাইজ.হাইট);
রূপান্তর = সিজিএফাইন ট্রান্সফর্ম রোটেট (ট্রান্সফর্ম, এমএপিআই);
বিরতি;
কেস ইউআইজিমেজ ওরিয়েন্টেশন লেফট:
কেস ইউআইআইজিওরিয়েন্টেশন লেফট মিররড:
রূপান্তর = সিজিএফাইন ট্রান্সফর্ম ট্রান্সলেট (রূপান্তর, চিত্র.সাইজ.উইথথ, 0);
ট্রান্সফর্ম = সিজিএফাইন ট্রান্সফর্ম রোটেট (ট্রান্সফর্ম, এম_PI_2);
বিরতি;
কেসআইআইআইজিএজ ওরিয়েন্টেশন রাইট:
কেসআইআইআইজিএইজ ওরিয়েন্টেশন
রূপান্তর = সিজিএফাইন ট্রান্সফর্ম ট্রান্সলেট (রূপান্তর, 0, ইমেজ.সাইজ.হাইট);
রূপান্তর = সিজিএফাইন ট্রান্সফর্ম রোটেট (রূপান্তর, -M_PI_2);
বিরতি;
কেস ইউআইজিএজ ওরিয়েন্টেশনআপ:
কেস ইউআইজিএজ ওরিয়েন্টেশন আপ মিররড:
বিরতি;
}
স্যুইচ (image.imageOrientation) {
কেস ইউআইজিএজ ওরিয়েন্টেশন আপ মিররড:
কেসআইআইআইজিওরিয়েন্টেশনডাউন মিররড:
রূপান্তর = সিজিএফাইন ট্রান্সফর্ম ট্রান্সলেট (রূপান্তর, চিত্র.সাইজ.উইথথ, 0);
রূপান্তর = সিজিএফাইন ট্রান্সফর্মস্কেল (রূপান্তর, -1, 1);
বিরতি;
কেস ইউআইআইজিওরিয়েন্টেশন লেফট মিররড:
কেসআইআইআইজিএইজ ওরিয়েন্টেশন
রূপান্তর = সিজিএফাইন ট্রান্সফর্ম ট্রান্সলেট (রূপান্তর, চিত্র.সাইজ.হাইট, 0);
রূপান্তর = সিজিএফাইন ট্রান্সফর্মস্কেল (রূপান্তর, -1, 1);
বিরতি;
কেস ইউআইজিএজ ওরিয়েন্টেশনআপ:
কেস ইউআইজিমেজ ওরিয়েন্টেশন ডাউন:
কেস ইউআইজিমেজ ওরিয়েন্টেশন লেফট:
কেসআইআইআইজিএজ ওরিয়েন্টেশন রাইট:
বিরতি;
}
// এখন আমরা অন্তর্নিহিত সিজিআইমেজটিকে একটি নতুন প্রসঙ্গে রূপান্তর করব, রূপান্তরটি প্রয়োগ করছি
// উপরে গণনা করা।
CGContextRef ctx = CGBitmapContextCreate (NULL, image.size.width, image.size.height,
সিজিআইমেজগেটবিটস পারকোম্পোনেন্ট (ইমেজ.সিজিআইমেজ), 0,
CGImageGetColorSpace (image.CGImage),
CGImageGetBitmapInfo (image.CGImage));
CGContextConcatCTM (ctx, transform);
স্যুইচ (image.imageOrientation) {
কেস ইউআইজিমেজ ওরিয়েন্টেশন লেফট:
কেস ইউআইআইজিওরিয়েন্টেশন লেফট মিররড:
কেসআইআইআইজিএজ ওরিয়েন্টেশন রাইট:
কেসআইআইআইজিএইজ ওরিয়েন্টেশন
// গ্রার ...
সিজি কনটেক্সটড্রাইজিমেজ (সিটিএক্স, সিজিআরেক্টমেক (0, 0, ইমেজ.সাইজ.হাইট, ইমেজ.সাইজ.উইথ), ইমেজ.সিজিআইজেশন);
বিরতি;
ডিফল্ট:
সিজি কনটেক্সটড্রাইজিমেজ (সিটিএক্স, সিজিআরেক্টমেক (0, 0, ইমেজ.সাইজ.উইথ, ইমেজ.সাইজ.হাইট), ইমেজ.সিজিআইজেশন);
বিরতি;
}
// এবং এখন আমরা অঙ্কন প্রসঙ্গে একটি নতুন ইউআইআইমেজ তৈরি করেছি
সিজিআইমেজআরএফ সিজিিমগ = সিজিবিটম্যাপকন্টেক্সটক্রিয়াটেমেজ (সিটিএক্স);
ইউআইআইমেজ * ইমজি = [ইউআইআইমেজ ইমেজ উইথসিজিআইমেজ: সিজিআইএমজি];
CGContextRelease (CTX);
CGImageRelease (cgimg);
প্রত্যাবর্তন img;
}