IOS-解决自定义UIImagePickerController 后的图片翻转问题
来源:互联网 发布:大数据网站 编辑:程序博客网 时间:2024/05/21 17:52
使用自定义UIImagePickerController,拍照后得到的图片显示的是翻转的图片,使用下列的方法可调整过来
//图片旋转
- (UIImage *)fixOrientation:(UIImage *)aImage
{
// No-op if the orientation is already correct
if (aImage.imageOrientation ==UIImageOrientationUp)
return aImage;
// We need to calculate the proper transformation to make the image upright.
// We do it in 2 steps: Rotate if Left/Right/Down, and then flip if Mirrored.
CGAffineTransform transform =CGAffineTransformIdentity;
switch (aImage.imageOrientation) {
caseUIImageOrientationDown:
caseUIImageOrientationDownMirrored:
transform = CGAffineTransformTranslate(transform, aImage.size.width, aImage.size.height);
transform = CGAffineTransformRotate(transform,M_PI);
break;
caseUIImageOrientationLeft:
caseUIImageOrientationLeftMirrored:
transform = CGAffineTransformTranslate(transform, aImage.size.width,0);
transform = CGAffineTransformRotate(transform,M_PI_2);
break;
caseUIImageOrientationRight:
caseUIImageOrientationRightMirrored:
transform = CGAffineTransformTranslate(transform,0, aImage.size.height);
transform = CGAffineTransformRotate(transform, -M_PI_2);
break;
default:
break;
}
switch (aImage.imageOrientation) {
caseUIImageOrientationUpMirrored:
caseUIImageOrientationDownMirrored:
transform = CGAffineTransformTranslate(transform, aImage.size.width,0);
transform = CGAffineTransformScale(transform, -1,1);
break;
caseUIImageOrientationLeftMirrored:
caseUIImageOrientationRightMirrored:
transform = CGAffineTransformTranslate(transform, aImage.size.height,0);
transform = CGAffineTransformScale(transform, -1,1);
break;
default:
break;
}
// Now we draw the underlying CGImage into a new context, applying the transform
// calculated above.
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) {
caseUIImageOrientationLeft:
caseUIImageOrientationLeftMirrored:
caseUIImageOrientationRight:
caseUIImageOrientationRightMirrored:
// Grr...
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;
}
// And now we just create a new UIImage from the drawing context
CGImageRef cgimg =CGBitmapContextCreateImage(ctx);
UIImage *img = [UIImageimageWithCGImage:cgimg];
CGContextRelease(ctx);
CGImageRelease(cgimg);
return img;
}
- IOS-解决自定义UIImagePickerController 后的图片翻转问题
- UIImagePickerController选择图片发送后旋转90度的问题
- UIImagePickerController选择图片发送后旋转90度的问题
- UIImagePickerController选择图片发送后旋转90度的问题
- 解决iOS上传图片后,图片方向错误的问题
- 临时解决UIImagePickerController在可编辑模式下选择相册图片后不能上移的bug
- 临时解决UIImagePickerController在可编辑模式下选择相册图片后不能上移的bug
- iOS 视频、图片翻转问题
- ios UIImagePickerController 添加一个自定义的view。
- IOS 解决CG截图功能出现图片翻转的情况
- 解决上传iphone拍照的图片自动翻转的问题
- UIImagePickerController编辑图片框大小的问题
- ios调用UIImagePickerController crash的问题
- iOS开发-使用UIImagePickerController遇到的问题
- UIImagePickerController选取图片后在判断图片方向,解决保存图片或重绘图片后旋转90度的方法
- CCOrbitCamera 翻转图片的问题
- ios自定义log,解决x-code8屏蔽log后,真机上缺少log的问题
- iOS UIImagePickerController 图片拾取器
- Android UI开源组件库BottomView ,第三方自定义UI控件
- maven常用命令
- Linux共享内存
- Mysql 如果数据存在则更新,不存在则插入
- 如何建一個新的git project server and client心得
- IOS-解决自定义UIImagePickerController 后的图片翻转问题
- 数据库三大范式
- Java深入 - Java JNI详解
- shell根据模板创建源程序
- select多路复用
- 在查找预编译头使用时跳过解决
- Android中图像特效处理(圆角、倒影)
- 车牌识别技术
- 跟我一起学extjs5(10--使用MVVM控制菜单样式,含前10节源码)