+ (UIImage *)rotateImage:(UIImage *)aImage {
CGImageRef imgRef = aImage.CGImage;
CGFloat width = CGImageGetWidth(imgRef);
CGFloat height = CGImageGetHeight(imgRef);
CGAffineTransform transform = CGAffineTransformIdentity;
CGRect bounds = CGRectMake(0, 0, width, height);
CGFloat scaleRatio = 1;
CGFloat boundHeight;
UIImageOrientation orient = aImage.imageOrientation;
switch(orient) {
case UIImageOrientationUp: //EXIF = 1
transform = CGAffineTransformIdentity;
break;
case UIImageOrientationUpMirrored: //EXIF = 2
transform = CGAffineTransformMakeTranslation(width, 0.0);
transform = CGAffineTransformScale(transform, -1.0, 1.0);
break;
case UIImageOrientationDown: //EXIF = 3
transform = CGAffineTransformMakeTranslation(width, height);
transform = CGAffineTransformRotate(transform, M_PI);
break;
case UIImageOrientationDownMirrored: //EXIF = 4
transform = CGAffineTransformMakeTranslation(0.0, height);
transform = CGAffineTransformScale(transform, 1.0, -1.0);
break;
case UIImageOrientationLeftMirrored: //EXIF = 5
boundHeight = bounds.size.height;
bounds.size.height = bounds.size.width;
bounds.size.width = boundHeight;
transform = CGAffineTransformMakeTranslation(height, width);
transform = CGAffineTransformScale(transform, -1.0, 1.0);
transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0);
break;
case UIImageOrientationLeft: //EXIF = 6
boundHeight = bounds.size.height;
bounds.size.height = bounds.size.width;
bounds.size.width = boundHeight;
transform = CGAffineTransformMakeTranslation(0.0, width);
transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0);
break;
case UIImageOrientationRightMirrored: //EXIF = 7
boundHeight = bounds.size.height;
bounds.size.height = bounds.size.width;
bounds.size.width = boundHeight;
transform = CGAffineTransformMakeScale(-1.0, 1.0);
transform = CGAffineTransformRotate(transform, M_PI / 2.0);
break;
case UIImageOrientationRight: //EXIF = 8
boundHeight = bounds.size.height;
bounds.size.height = bounds.size.width;
bounds.size.width = boundHeight;
transform = CGAffineTransformMakeTranslation(height, 0.0);
transform = CGAffineTransformRotate(transform, M_PI / 2.0);
break;
default:
[NSException raise:NSInternalInconsistencyException format:@"Invalid image orientation"];
}
UIGraphicsBeginImageContext(bounds.size);
CGContextRef context = UIGraphicsGetCurrentContext();
if (orient == UIImageOrientationRight || orient == UIImageOrientationLeft) {
CGContextScaleCTM(context, -scaleRatio, scaleRatio);
CGContextTranslateCTM(context, -height, 0);
} else {
CGContextScaleCTM(context, scaleRatio, -scaleRatio);
CGContextTranslateCTM(context, 0, -height);
}
CGContextConcatCTM(context, transform);
CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, width, height), imgRef);
UIImage *imageCopy = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return imageCopy;
}
分享到:
相关推荐
peasUpload 前端压缩图片上传,能进行前端压缩处理,修正拍照上传方向不正确的功能。
“POCO相机”是针对手机拍照用户群推出的多镜头拍照及视频、美化处理、一键多平台分享的超级手机拍照工具。...7、(Android)支持前、后摄像头方向识别修正; 8、(Android)支持Android2.1到4.0所有系统。
“POCO相机”是针对手机拍照用户群推出的多镜头拍照及视频、美化处理、一键多平台分享的超级手机拍照工具。...7、(Android)支持前、后摄像头方向识别修正; 8、(Android)支持Android2.1到4.0所有系统。
用于选择本地图片(支持手机摄像头拍照).不论是否横竖屏拍摄,最终得到的图片都会修正为正向图片,并缩放到指定大小,以方便后续操作使用. demo地址: 创建组件 new ImgSlter(config); config.el 指定对象,可以直接指定...
“POCO美人相机”是由中国最大的原创图片社区POCO.CN,针对手机拍照用户群而推出的自恋级手机拍照工具。已有2200万美女正在使用…荣登过七国/地区苹果店...9、支持前、后摄像头方向识别修正; 10、修正一些已知问题。
获取到照片拍摄的方向角,对非横拍的ios照片进行角度旋转修正。
因此解决这个问题的思路是:获取到照片拍摄的方向角,对非横拍的ios照片进行角度旋转修正。 利用exif.js读取照片的拍摄信息,这里主要用到Orientation属性。 Orientation属性说明如下: 下面就直接上代码了。 主要...
还可以读取图片源数据,修正图片方向信息(iOS拍照上传BUG)。 使用 引入以下脚本,包含了Load-Image所有库,以及批量上传库。 [removed][removed] 或者分别引用所需库: 新增库: [removed][removed] <script ...
html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题;...因此解决这个问题的思路是:获取到照片拍摄的方向角,对非横拍的ios照片进行角度旋转修正。
html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题;...因此解决这个问题的思路是:获取到照片拍摄的方向角,对非横拍的ios照片进行角度旋转修正。
伊曼基照片管理软件是一款专业、好用的照片(图片)管理系统。它没有花哨的界面,但是有实用的功能。它适合于用来管理各种数码照片,业务图片等。 伊曼基照片管理软件特点: 1.自动识别重复的文件;在集中存放的...
6)-da(修正日期)指令的作用是,如果相机日期和不准确,分别填入相机当前日期和实际日期就可纠正所有照片,例如相机设置到了08年,而目前实际上是07年,则可以运行 Jhead -da2008:01:01-2007:01:01 *.jpg
意法半导体(ST)推出全新高性能单机影像信号处理器,新产品支持手机...新的影像处理器支持图像方向特效,例如:图像反射、垂直或水平翻转和任意角度旋转,色彩处理功能包括怀旧褐色阶和黑白两种照片模式。 在3
-da[date1]-[date2]把拍摄日期为data2的照片日期修正为data1;date格式为yyyy:mm:dd或yyyy:mm:dd+hh:mm或yyyy:mm:dd+hh:mm:ss -ts[time]直接修改exif中的时间,格式为yyyy:mm:dd-hh:mm:ss -ds[date]直接修改exif中的...
审核天面照片的拍摄是否符合规范,是否体现各小区主覆盖及左右()度覆盖情况。 无线数据制作环节主要包括() 无线网数据制作包括() ()数据由省网优统一规划分配,邻区数据可根据现场开通情况进行微调。 在宏...
研究方向 Android+HTML5 学位授予日期 答辩委员会主席 评阅人 硕士学位论文 基于Android+HTML5的移动Web项目 高效开发探究 专业名称: 软件工程 研究生姓名: 唐帅 导师姓名: 罗军舟 ...