可以利用这种方式实现图片UIImage翻转,本人用于自拍后,对左右相反照片的处理

finishImage为需要处理的照片

在这之前需定义一下:

CGFloat DegreesToRadians(CGFloat degrees) {return degrees *M_PI / 180;};

CGFloat RadiansToDegrees(CGFloat radians) {return radians;};

  

UIImageView *imgView = [[UIImageViewalloc]initWithFrame:CGRectMake(0,0, 640, 480)];

        

        NSData *imgData =UIImagePNGRepresentation(finishImage);

       finishImage = [UIImageimageWithData:imgData];

        

       UIImage *image=finishImage;

        

        CGRect rect =CGRectMake(0,0, self.preview.frame.size.width,self.preview.frame.size.height);//创建矩形框

        UIGraphicsBeginImageContext(rect.size);//根据size大小创建一个基于位图的图形上下文

       CGContextRef currentContext = UIGraphicsGetCurrentContext();//获取当前quartz 2d绘图环境

       CGContextClipToRect( currentContext, rect);//设置当前绘图环境到矩形框

       CGContextDrawImage(currentContext, rect, image.CGImage);//绘图

        UIImage *cropped =UIGraphicsGetImageFromCurrentImageContext();//获得图片

        UIGraphicsEndImageContext();//从当前堆栈中删除quartz 2d绘图环境


       finishImage=cropped;

        imgView.image =finishImage;

//取出处理之后的照片

        finishImage = [KCCommonimageRotatedByRadians:90andImageView:imgView];



+ (UIImage *)imageRotatedByRadians:(CGFloat)radians andImageView:(UIImageView *)imageView

{

    return [KCCommonimageRotatedByDegrees:RadiansToDegrees(radians)andImageView:imageView];

}


+ (UIImage *)imageRotatedByDegrees:(CGFloat)degrees andImageView:(UIImageView *)imageView

{

    // calculate the size of the rotated view's containing box for our drawing space

   UIView *rotatedViewBox = [[UIViewalloc] initWithFrame:imageView.frame];

    CGAffineTransform t =CGAffineTransformMakeRotation(DegreesToRadians(degrees));

    rotatedViewBox.transform = t;

   CGSize rotatedSize = rotatedViewBox.frame.size;

    [rotatedViewBoxrelease];

    

    // 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, DegreesToRadians(degrees));

    

    // Now, draw the rotated/scaled image into the context

   CGContextScaleCTM(bitmap, 1.0, -1.0);

   CGContextDrawImage(bitmap, CGRectMake(-imageView.frame.size.width /2, -imageView.frame.size.height /2, imageView.frame.size.width, imageView.frame.size.height), [imageView.image CGImage]);

    

    UIImage *newImage =UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

   return newImage;

    

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值