আমি একটি আছে UIImageযে UIImageOrientationUp(প্রতিকৃতি) যে আমি (ভূদৃশ্য পর্যন্ত) 90 ডিগ্রী ঘোরান ঘড়ির কাঁটার বিপরীতে চাই। আমি একটি ব্যবহার করতে চাই না CGAffineTransform। আমি পিক্সেলগুলি চাই UIImageপ্রকৃতপক্ষে অবস্থান পরিবর্তন করতে। আমি কোডের একটি ব্লক ব্যবহার করছি (নীচে দেখানো হয়েছে) মূলত এটি করার জন্য একটি আকার পরিবর্তন করার উদ্দেশ্যে UIImage। আমি বর্তমানের আকার হিসাবে একটি টার্গেট আকার সেট করেছি UIImageতবে আমি একটি ত্রুটি পেয়েছি:
(ত্রুটি): সিজিবিটম্যাপকন্টেক্সটক্রিয়াট: অবৈধ ডেটা বাইটস / সারি: 8 ইন্টিজার বিট / উপাদান, 3 উপাদান, কেসিজিমেজআল্ফপ্রিমুলিটিপ্লাস্টলাস্টের জন্য কমপক্ষে 1708 হওয়া উচিত।
(আমি যখনই লক্ষ্য আকার বিটিডাব্লু হিসাবে একটি ছোট আকার সরবরাহ করি তখন আমি ত্রুটি পাই না)। UIImageবর্তমান আকার সংরক্ষণের সময় আমি কীভাবে আমার মূল ডিগ্রি সিসিডব্লু ঘোরান?
-(UIImage*)reverseImageByScalingToSize:(CGSize)targetSize:(UIImage*)anImage
{
UIImage* sourceImage = anImage;
CGFloat targetWidth = targetSize.height;
CGFloat targetHeight = targetSize.width;
CGImageRef imageRef = [sourceImage CGImage];
CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imageRef);
CGColorSpaceRef colorSpaceInfo = CGImageGetColorSpace(imageRef);
if (bitmapInfo == kCGImageAlphaNone) {
bitmapInfo = kCGImageAlphaNoneSkipLast;
}
CGContextRef bitmap;
if (sourceImage.imageOrientation == UIImageOrientationUp || sourceImage.imageOrientation == UIImageOrientationDown) {
bitmap = CGBitmapContextCreate(NULL, targetHeight, targetWidth, CGImageGetBitsPerComponent(imageRef), CGImageGetBytesPerRow(imageRef), colorSpaceInfo, bitmapInfo);
} else {
bitmap = CGBitmapContextCreate(NULL, targetWidth, targetHeight, CGImageGetBitsPerComponent(imageRef), CGImageGetBytesPerRow(imageRef), colorSpaceInfo, bitmapInfo);
}
if (sourceImage.imageOrientation == UIImageOrientationRight) {
CGContextRotateCTM (bitmap, radians(90));
CGContextTranslateCTM (bitmap, 0, -targetHeight);
} else if (sourceImage.imageOrientation == UIImageOrientationLeft) {
CGContextRotateCTM (bitmap, radians(-90));
CGContextTranslateCTM (bitmap, -targetWidth, 0);
} else if (sourceImage.imageOrientation == UIImageOrientationDown) {
// NOTHING
} else if (sourceImage.imageOrientation == UIImageOrientationUp) {
CGContextRotateCTM (bitmap, radians(90));
CGContextTranslateCTM (bitmap, 0, -targetHeight);
}
CGContextDrawImage(bitmap, CGRectMake(0, 0, targetWidth, targetHeight), imageRef);
CGImageRef ref = CGBitmapContextCreateImage(bitmap);
UIImage* newImage = [UIImage imageWithCGImage:ref];
CGContextRelease(bitmap);
CGImageRelease(ref);
return newImage;
}