图片裁剪后照片旋转了
来源:互联网 发布:lua windows安装lfs 编辑:程序博客网 时间:2024/04/28 05:27
在我们的应用中如果用到的图片的裁剪有时候裁剪后图片的方向旋转了
裁剪前:
裁剪后:
原因是我们裁剪的时候绘制图片的坐标系和拍照的坐标系的原点不一样,
我们可以用下面的方法来跳转图片裁剪后的旋转问题。
- (UIImage *)fixOrientation:(UIImage *)aImage { if (aImage.imageOrientation == UIImageOrientationUp) return aImage; CGAffineTransform transform = CGAffineTransformIdentity; switch (aImage.imageOrientation) { case UIImageOrientationDown: case UIImageOrientationDownMirrored: transform = CGAffineTransformTranslate(transform, aImage.size.width, aImage.size.height); transform = CGAffineTransformRotate(transform, M_PI); break; case UIImageOrientationLeft: case UIImageOrientationLeftMirrored: transform = CGAffineTransformTranslate(transform, aImage.size.width, 0); transform = CGAffineTransformRotate(transform, M_PI_2); break; case UIImageOrientationRight: case UIImageOrientationRightMirrored: transform = CGAffineTransformTranslate(transform, 0, aImage.size.height); transform = CGAffineTransformRotate(transform, -M_PI_2); break; default: break; } switch (aImage.imageOrientation) { case UIImageOrientationUpMirrored: case UIImageOrientationDownMirrored: transform = CGAffineTransformTranslate(transform, aImage.size.width, 0); transform = CGAffineTransformScale(transform, -1, 1); break; case UIImageOrientationLeftMirrored: case UIImageOrientationRightMirrored: transform = CGAffineTransformTranslate(transform, aImage.size.height, 0); transform = CGAffineTransformScale(transform, -1, 1); break; default: break; } CGContextRef ctx = CGBitmapContextCreate(NULL, aImage.size.width, aImage.size.height, CGImageGetBitsPerComponent(aImage.CGImage), 0, CGImageGetColorSpace(aImage.CGImage), CGImageGetBitmapInfo(aImage.CGImage)); CGContextConcatCTM(ctx, transform); switch (aImage.imageOrientation) { case UIImageOrientationLeft: case UIImageOrientationLeftMirrored: case UIImageOrientationRight: case UIImageOrientationRightMirrored: CGContextDrawImage(ctx, CGRectMake(0,0,aImage.size.height,aImage.size.width), aImage.CGImage); break; default: CGContextDrawImage(ctx, CGRectMake(0,0,aImage.size.width,aImage.size.height), aImage.CGImage); break; } CGImageRef cgimg = CGBitmapContextCreateImage(ctx); UIImage *img = [UIImage imageWithCGImage:cgimg]; CGContextRelease(ctx); CGImageRelease(cgimg); return img; }
0 0
- 图片裁剪后照片旋转了
- android-照片旋转/图片裁剪
- 图片裁剪,摄像后图片旋转
- 图片裁剪/旋转/缩放
- iOS图片裁剪与旋转
- 图片拖动旋转缩放裁剪
- Android选择本地图片或者照片裁剪
- iOS 图片处理-图片旋转和裁剪
- android中用三星手机拍的照片读取后旋转了的解决、
- 获取图片库图片后旋转了90度的问题
- actionScript 3.0 图片裁剪及旋转
- php+croppic 图片裁剪,可缩放、旋转
- opencv实现图片的裁剪以及旋转
- GraphicsMagick 实现图片的裁剪, 旋转, 移动
- 拍照后旋转图片
- Android 图片压缩、照片选择、裁剪,上传、一整套图片解决方案
- Android设备上获取照片、裁剪图片、压缩图片
- android camera 照片旋转了90度
- Android 自定义View
- 多图详解Spring框架的设计理念与设计模式
- Spring Remoting: Remote Method Invocation (RMI)
- 面向对象 构造方法
- BitmapFactory.Options详解
- 图片裁剪后照片旋转了
- 053-15 Which tasks are run automatically as part of the Automated Maintenance Task by default? (Choo
- 数据结构系列——Trie树
- Linux之模块机制
- SecureCRT 常用设置,日常使用方法------不放弃update
- 硬币找钱问题1
- 行情数据处理为分钟数据(包含开盘价、最高价、最低价、收盘价)
- Lesson 11 Not guilty
- 解决idea 15重新部署、启动tomcat时报“single-instance run configuration”的错误