UIImage分类调整大小,旋转等

来源:互联网 发布:淘宝退款流程未发货 编辑:程序博客网 时间:2024/06/15 04:32
CGFloat degreesToRadians(CGFloat degrees){    return degrees * M_PI / 180;};@interface UIImage (Rotate)- (UIImage *)imageRotatedByDegrees:(CGFloat)degrees;@end@implementation UIImage (Rotate)- (UIImage *)imageRotatedByDegrees:(CGFloat)degrees{    UIView *rotatedViewBox = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.size.width, self.size.height)];    CGAffineTransform t = CGAffineTransformMakeRotation(degreesToRadians(degrees));    rotatedViewBox.transform = t;    CGSize rotatedSize = rotatedViewBox.frame.size;        UIGraphicsBeginImageContext(rotatedSize);    CGContextRef bitmap = UIGraphicsGetCurrentContext();        CGContextTranslateCTM(bitmap, rotatedSize.width / 2, rotatedSize.height / 2);        CGContextRotateCTM(bitmap, degreesToRadians(degrees));        CGContextScaleCTM(bitmap, 1.0, -1.0);    CGContextDrawImage(bitmap, CGRectMake(-self.size.width / 2, -self.size.height / 2, self.size.width, self.size.height), [self CGImage]);        UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();    UIGraphicsEndImageContext();    return newImage;}@end


- (UIImage *)resizeImage:(UIImage *)image scaledToSize:(CGSize)newSize{    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();    UIGraphicsEndImageContext();    return newImage;}


以下为绘制一个圆形,然后生成一个UIImageView,测试代码:

//start...

CAKeyframeAnimation* animation;    animation = [CAKeyframeAnimation animation];CGMutablePathRef path = CGPathCreateMutable();NSLog(@"原点%f, 原点%f",imgview.layer.position.x,imgview.layer.position.y);CGPathMoveToPoint(path, NULL,imgview.layer.position.x,imgview.layer.position.y);int p =  (int)[self getblank:tag];NSLog(@"旋转%d, num:%d", p, (int)num);float f = 2.0*M_PI  - 2.0*M_PI *p/PHOTONUM;float h = f + 2.0*M_PI *num/PHOTONUM;float centery = self.view.center.y - DY;float centerx = self.view.center.x;float tmpy = centery + RADIUS*cos(h);float tmpx = centerx - RADIUS*sin(h);imgview.center = CGPointMake(tmpx,tmpy);    CGPathAddArc(path, nil, self.view.center.x, self.view.center.y - DY, RADIUS, f+ M_PI/2, f+ M_PI/2 + 2.0*M_PI *num/PHOTONUM,0);    animation.path = path;        //test start    UIGraphicsBeginImageContext(self.view.bounds.size);    CGContextRef gc = UIGraphicsGetCurrentContext();    CGContextAddPath(gc, path);    [[UIColor colorWithRed:(arc4random()%255/255) green:(arc4random()%255/255) blue:(arc4random()%255/255) alpha:1.0] setStroke];    CGContextSetLineWidth(gc, 2);    CGContextDrawPath(gc, kCGPathStroke);    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();    UIGraphicsEndImageContext();    UIImageView *imgview2 = [[UIImageView alloc] initWithImage:image];    [self.view addSubview:imgview2];    //test end        CGPathRelease(path);
//end...






0 0
原创粉丝点击