在保存为PNG之前将新创建的iOS图像旋转90度 [英] Rotate Newly Created iOS Image 90 Degrees Prior to Saving as PNG
问题描述
我已经阅读了很多与此相关的答案,但我仍然无法让它工作。
I have read numerous answers related to this, but I still can't get it to work.
我有一个用户可以在其中签名的视图。以下是它的外观: http://d.pr/i/McuE
I have a view where a user can sign their name. Here's how it looks: http://d.pr/i/McuE
我可以成功检索此图像并将其保存到文件系统,但我需要在保存之前将其旋转90度,以便签名从左到右读取。
I can successfully retrieve this image and save it to the file system, but I need to rotate it 90 degrees before saving so the signature reads from left-to-right.
// Grab the image
UIGraphicsBeginImageContext(self.signArea.bounds.size);
[self.signArea drawRect: self.signArea.bounds];
UIImage *signatureImage = UIGraphicsGetImageFromCurrentImageContext();
//-- ? -- Rotate the image (this doesn't work) -- ? --
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextRotateCTM(context, M_PI_2);
UIGraphicsEndImageContext();
//Save the image as a PNG in Documents folder
[UIImagePNGRepresentation(signatureImage) writeToFile:[[PPHelpers documentsPath] stringByAppendingPathComponent:@"signature-temp.png"] atomically:YES];
如何在保存之前旋转图像?
How can I rotate the image prior to saving?
提前感谢您的帮助。我使用iOS 7 SDK在Xcode 5上。
Thanks in advance for your help. I'm on Xcode 5 using the iOS 7 SDK.
推荐答案
我终于使用其中一个答案来解决这个问题了发布:如何将UIImage旋转90度?
I finally got this to work using one of the answers on this post: How to Rotate a UIImage 90 degrees?
我用过这种方法:
- (UIImage *)imageRotatedByDegrees:(UIImage*)oldImage deg:(CGFloat)degrees{
//Calculate the size of the rotated view's containing box for our drawing space
UIView *rotatedViewBox = [[UIView alloc] initWithFrame:CGRectMake(0,0,oldImage.size.width, oldImage.size.height)];
CGAffineTransform t = CGAffineTransformMakeRotation(degrees * M_PI / 180);
rotatedViewBox.transform = t;
CGSize rotatedSize = rotatedViewBox.frame.size;
//Create the bitmap context
UIGraphicsBeginImageContext(rotatedSize);
CGContextRef bitmap = UIGraphicsGetCurrentContext();
//Move the origin to the middle of the image so we will rotate and scale around the center.
CGContextTranslateCTM(bitmap, rotatedSize.width/2, rotatedSize.height/2);
//Rotate the image context
CGContextRotateCTM(bitmap, (degrees * M_PI / 180));
//Now, draw the rotated/scaled image into the context
CGContextScaleCTM(bitmap, 1.0, -1.0);
CGContextDrawImage(bitmap, CGRectMake(-oldImage.size.width / 2, -oldImage.size.height / 2, oldImage.size.width, oldImage.size.height), [oldImage CGImage]);
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
然后将其称为:
//Rotate it
UIImage *rotatedImage = [self imageRotatedByDegrees:signatureImage deg:90];
谢谢大家。
这篇关于在保存为PNG之前将新创建的iOS图像旋转90度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!