最近因做直播项目需要,要求上传直播的一个Cover页需要自定义裁剪图片的尺寸及比例,因为imagePicker只有一个imagePicker.allowsEditing这么个属性,但是这个属性设置之后,图片只能裁剪成1:1的正方形,而且具体尺寸也不能改变,太死板,自己在网上找了一些资料,然后自己试着做了一个小Demo,给大家分享一下:
Demo连接:https://github.com/iosweihui/WHCropImage
原生裁剪是这样的:
Demo里面选择照片之后可以通过手势来调整图片尺寸和比例
还有一点说明就是Demo里面加了一个分类:UIImage+FixOrientation
这个问题是有关iOS设备拍照的问题,就是用手机拍照之后当你使用这个图片的时候你会发现图片被翻转了90,应该有不少人遇到过这个问题吧.
我再做的时候是在用手机竖屏进行拍摄的情况下,通过
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
方法得到照片之后对图片进行裁剪操作之后会导致image的一个imageOrientation属性发生变化,有种说法是只要照片大于2M就会出现这个问题:
用相机拍摄出来的照片含有EXIF信息,UIImage的imageOrientation属性指的就是EXIF中的orientation信息。
相机拍照后直接取出来的UIimage(用UIImagePickerController OriginalImage取出),它本身的imageOrientation属性是3,即UIImageOrientationRight。如果这个图片直接使用则没事,但是如果对它进行裁剪、缩放等操作后,它的这个imageOrientation属性会变成0。此时这张图片用在别的地方就会发生旋转。
如果我们忽略orientation信息,而直接对照片进行像素处理或者drawInRect等操作,得到的结果是翻转或者旋转90之后的样子。这是因为我们执行像素处理或者drawInRect等操作之后,imageOrientaion信息被删除了,imageOrientaion被重设为0,造成照片内容和imageOrientaion不匹配。
所以,在对照片进行处理之前,先将照片旋转到正确的方向,并且返回的imageOrientaion为0,但是imageOrientaion这个属性是只读的,那么我们就可采用Category来解决,就是Demo中的那个UIImage+FixOrientation.
网友评论