美文网首页相机、相册ios实用开发技巧
iOS自定义裁剪图片比例尺寸,图片自动旋转解决办法

iOS自定义裁剪图片比例尺寸,图片自动旋转解决办法

作者: 雪上踏痕 | 来源:发表于2016-09-06 15:57 被阅读2180次

          最近因做直播项目需要,要求上传直播的一个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.

    相关文章

      网友评论

      • zhudms:您好,裁剪范围的触控调整很不灵敏,请问这是要在哪里调整
        山山逗:@zhudms 有更合适的Demo吗?
        zhudms:@雪上踏痕 谢谢!没改明白,后来又找了别的Demo😂
        雪上踏痕:不好意思 最近比较忙 你可以在imageView里修改position的位置
      • 男人宫:亲,有bug
        男人宫:@雪上踏痕 裁剪框出来后,点击取消,应该是从新照相,你的demo点击后卡在那个页面什么都不能做了
        雪上踏痕::joy:什么问题
      • me_bingo:有demo吗
        雪上踏痕:有,已经传到github了
      • 素酥:还有我想问下。。这个按比例是在哪里调整的。。我要4:3的
      • 素酥:可以留个联系方式吗?我有个问题想问。。怎么加图片涂鸦的..O(∩_∩)O谢谢

      本文标题:iOS自定义裁剪图片比例尺寸,图片自动旋转解决办法

      本文链接:https://www.haomeiwen.com/subject/wnbrettx.html