iOS拍照方向

iOS拍照方向问题,自己很长一段时间也不清楚,现在整理一下。

三个问题:

1. iPhone拍照时那个方向是正(UIImageOrientationUp) ?

2. 为什么UIImageView方向显示正确,上传到服务器后却不正确 ?

3. 如何调整方向?

第一个问题:iPhone拍照究竟那个是正方向?

(正方向)UIImageOrientationUp

而我们平常拍照的方向则是 (UIImageOrientationRight)

有没有很吃惊!

第二个问题: 为什么UIImageView方向显示正确?

拍照时,相机会将此时手机的orientation属性存储到UIImage的imageOrientation中。

UIImageView很聪明,在显示时它会根据UIImage对象的imageOrientation属性调整最终显示的方向。所以不管我们拍照时那个方向,它显示的都正常。

但实际上UIImage的图像数据却是按照物理相机的角度存储。So~

第三个问题:如何调整方向?

@interface UIImage (Utility)

- (UIImage *)orientationCorrectedImage;

@end

@implementation UIImage (Utility)

- (UIImage *)orientationCorrectedImage
{
    UIImage * resultImage = nil;
    resultImage = self;
    UIImageOrientation imageOrientation = self.imageOrientation;
    if(imageOrientation != UIImageOrientationUp){
        UIGraphicsBeginImageContext(self.size);
        [self drawInRect:CGRectMake(0, 0, self.size.width, self.size.height)];
        resultImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
    }
    return resultImage;
}
@end

示例代码(了解更多):https://github.com/github-xiaogang/CameraDemo/

时间: 2024-09-30 20:40:09

iOS拍照方向的相关文章

Android开发实践:掌握Camera的预览方向和拍照方向

Android的Camera相关应用开发中,有一个必须搞清楚的知识点,就是Camera的预览方向和拍照方向,本文就重点讨论一下这个问题. 图像的Sensor方向:手机Camera的图像数据都是来自于摄像头硬件的图像传感器(Image Sensor),这个Sensor被固定到手机之后是有一个默认的取景方向的,这个方向如下图所示,坐标原点位于手机横放时的左上角: Camera的预览方向:由于手机屏幕可以360度旋转,为了保证用户无论怎么旋转手机都能看到"正确"的预览画面(这个"正

ios 拍照与摄像

ios 拍照与摄像 (2012-11-23 14:38:40) 该类继承自UINavigationController类 步骤: 检查媒体来源模式是否可用 检查该来源模式下所支持的媒体类型 创建图像选取控制器,设置其属性并显示 在委托协议方法中处理 1.检查媒体来源 调用UIImagePickerController类的静态方法isSourceTypeAvailable来检查 sourceType是一个UIImagePickerControllerSourceType类型的枚举值,它表示图像选取

iOS拍照图片旋转的问题

很久之前,遇到了这种情况,iOS某端拍照上传到服务器,其他iOS端从服务器下载该照片展示,发现图片逆时针旋转了90度.当时百度了一下,找到一段代码修正image方向,问题解决了,但没有深入理解底层原理.最近又遇到这个问题,还是同样的解决方案.但是codereview的时候同事问为什么这么写,就深入研究了一下. 首先我们要知道image的imageOrientation属性.它是记录拍照时手机方向的,iOS默认横屏Home键在右侧为标准拍照姿势,imageOrientation为UIImageOr

前端手势控制图片插件书写四(图片上传及Ios图片方向问题)

1.在图片上传中,使用的input的type为File的属性.使用filereader的Api let that = this; var file = document.getElementById("file").files[0]; console.log(document.getElementById("file").files); if(!/image\/\w+/.test(file.type)){ console.error("看清楚,这个需要图片

iOS设备方向和用户界面方向

UIDeviceOrientation refers to the physical orientation of the device whereas UIInterfaceOrientation refers to the orientation of the user interface. UIDeviceOrientation is a property of the UIDevice class, and there are these possible values: UIDevic

iOS 拍照、从相册选图并对图片进行裁剪

裁剪图片的功能借助了Github上的项目AGSimpleImageEditorView.不多说,一步步的看Demo的实现过程吧: 1.下载Github上这个项目工程到本地并将其拖入到自己的工程中(前提是你已经建立了工程),由于AGSimpleImageEditorView不支持ARC,所以还要做相应的配置,设置编译器标签-fno-objc-arc: 另外,由于使用到图形处理和图片处理,所以还要另外导入两个库,如下图 完成后,按command+B编译试试,如果没问题,说明工程集成成功了,下面就可以

iOS 拍照保存到相册

之前看了一些开源的代码,里面有一个功能,就是将图片下载到相册,仔细看了其中的代码,只有很简单的一句话,并且保存过后,还可以判断是否保存成功. 如下代码所示, 点击按钮,将self.imageView上面的image内容保存到本地相册,并指定判断保存成功与否的方法imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo: - (IBAction)saveImageToAlbum:(id)sender {    UIImageWrite

修正ios h5上传图时的图片方向问题

.ios上传会在exif中带一个 Orientation的属性,这个属性在windows中不会生效,在ios浏览器中会生效,造成图片在windows资源管理器中与ios浏览器中方向不一致 为了用户体验,需要把图片矫正成正常的图片. 需要用到一个 exif 插件 地址 https://github.com/exif-js/exif-js/ 代码 function check_file(files){ //校验收集表单数据 // var formdata = new FormData(); if(!

H5拍照、选择图片上传组件核心

背景 前段时间项目重构,改成SSR的项目,但之前用的图片选择上传组件不支持SSR(server-side-render).遂进行了调研,发现很多的工具.但有的太大,有的使用麻烦,有的不满足使用需求.决定自己写一个h5移动端图片上传组件.图片上传是一个比较普遍的需求,PC端还好,移动端就不是特别好做了.下面将过程中一些重点的问题进行简单的记录. 重点 1.关于input 选择功能使用<input>标签实现.属性accept='image/*',:capture表示,可以捕获到系统默认的设备,比如