【IOS】旋转图片和截取图片
来源:互联网 发布:淘宝怎么搜潮流的衣服 编辑:程序博客网 时间:2024/05/16 17:24
// 图片旋转- (CGImageRef)createRotatedImage:(CGImageRef)original degrees:(float)degrees CF_RETURNS_RETAINED { if (degrees == 0.0f) { CGImageRetain(original); return original; } else { double radians = degrees * M_PI / 180; #if TARGET_OS_EMBEDDED || TARGET_IPHONE_SIMULATOR radians = -1*radians;#endif size_t _width = CGImageGetWidth(original); size_t _height = CGImageGetHeight(original); CGRect imgRect = CGRectMake(0, 0, _width, _height); CGAffineTransform __transform = CGAffineTransformMakeRotation(radians); CGRect rotatedRect = CGRectApplyAffineTransform(imgRect, __transform); CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextRef context = CGBitmapContextCreate(NULL, rotatedRect.size.width, rotatedRect.size.height, CGImageGetBitsPerComponent(original), 0, colorSpace, kCGBitmapAlphaInfoMask & kCGImageAlphaPremultipliedFirst); CGContextSetAllowsAntialiasing(context, FALSE); CGContextSetInterpolationQuality(context, kCGInterpolationNone); CGColorSpaceRelease(colorSpace); CGContextTranslateCTM(context, +(rotatedRect.size.width/2), +(rotatedRect.size.height/2)); CGContextRotateCTM(context, radians); CGContextDrawImage(context, CGRectMake(-imgRect.size.width/2, -imgRect.size.height/2, imgRect.size.width, imgRect.size.height), original); CGImageRef rotatedImage = CGBitmapContextCreateImage(context); CFRelease(context); return rotatedImage; }}
/** * 图片截取 * 从图片中按指定的位置大小截取图片的一部分 * UIImage image 原始的图片 * CGRect rect 要截取的区域 */- (UIImage *)imageFromImage:(UIImage *)image inRect:(CGRect)rect { float imageWidth = image.size.width; float imageHeight = image.size.height; //按图片和屏幕宽高比截取 float wcount = imageWidth/_videoPreviewView.frame.size.width; float hcount = imageHeight/_videoPreviewView.frame.size.height; CGRect tt = CGRectMake(rect.origin.x*wcount, rect.origin.y*hcount, rect.size.width*wcount, rect.size.height*hcount); CGImageRef sourceImageRef = [image CGImage]; CGImageRef newImageRef = CGImageCreateWithImageInRect(sourceImageRef, tt); UIImage *newImage = [UIImage imageWithCGImage:newImageRef]; return newImage;}
/** * 改变图片大小 */-(UIImage*)image:(UIImage*)image scaleToSize:(CGSize)size{ // 创建一个bitmap的context // 并把它设置成为当前正在使用的context UIGraphicsBeginImageContext(size); // 绘制改变大小的图片 [image drawInRect:CGRectMake(0, 0, size.width, size.height)]; // 从当前context中创建一个改变大小后的图片 UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext(); // 使当前的context出堆栈 UIGraphicsEndImageContext(); // 返回新的改变大小后的图片 return scaledImage;}
使用方法:
//旋转后的图片 UIImage *imageRef = [UIImage imageWithCGImage:[self createRotatedImage:image.CGImage degrees:90]];//旋转90度 //截取后的图片 UIImage *rectImage = [self imageFromImage:imageRef inRect:_scanImageRect]; // UIImage *rotationImage = [UIImage imageWithCGImage:imageRef]; _resultImage = [self image:rectImage scaleToSize:CGSizeMake(CAMERA_WIDTH, CAMERA_HEIGHT)];
PS:文章部分代码转载自ZXing源码
1 0
- 【IOS】旋转图片和截取图片
- IOS 图片 截取 和 合并
- iOS 图片处理-图片旋转和裁剪
- iOS-图片拼接和图片旋转问题
- iOS自定义相机截取图片旋转90°的问题
- ios 图片的截取
- ios 图片的截取
- iOS截取图片
- IOS 截取任意图片
- iOS view截取图片
- ios图片截取
- iOS 截取原型图片
- iOS 图片截取
- 十一 iOS 图片截取
- [IOS]图片的旋转和缩放
- iOS图片旋转
- ios图片旋转
- ios图片旋转
- js对象
- ConcurrentHashMap
- d3.js 参考笔记
- Python之Matplotlib库常用函数大全(含注释)
- C++实验5-数组分离
- 【IOS】旋转图片和截取图片
- Tomcat启动后,Unable to compile class for JSP解决方法
- Python装饰器
- drawable各种属性
- js登录验证
- 微信预约系统
- Java字符串_String
- Android设计模式MVVM之DataBinding简单使用
- 普通工程师和高级工程师的差别在哪里?如何快速突破?