iOS自定義裁剪圖片比例尺寸,圖片自動旋轉解決辦法

? ? ? 最近因做直播項目需要,要求上傳直播的一個Cover頁需要自定義裁剪圖片的尺寸及比例,因為imagePicker只有一個imagePicker.allowsEditing這么個屬性,但是這個屬性設置之后,圖片只能裁剪成1:1的正方形,而且具體尺寸也不能改變,太死板,自己在網(wǎng)上找了一些資料,然后自己試著做了一個小Demo,給大家分享一下:

Demo連接:https://github.com/iosweihui/WHCropImage

原生裁剪是這樣的:


Demo里面選擇照片之后可以通過手勢來調(diào)整圖片尺寸和比例



還有一點說明就是Demo里面加了一個分類:UIImage+FixOrientation


這個問題是有關iOS設備拍照的問題,就是用手機拍照之后當你使用這個圖片的時候你會發(fā)現(xiàn)圖片被翻轉了90,應該有不少人遇到過這個問題吧.

我再做的時候是在用手機豎屏進行拍攝的情況下,通過

UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

方法得到照片之后對圖片進行裁剪操作之后會導致image的一個imageOrientation屬性發(fā)生變化,有種說法是只要照片大于2M就會出現(xiàn)這個問題:



用相機拍攝出來的照片含有EXIF信息,UIImage的imageOrientation屬性指的就是EXIF中的orientation信息。

相機拍照后直接取出來的UIimage(用UIImagePickerController OriginalImage取出),它本身的imageOrientation屬性是3,即UIImageOrientationRight。如果這個圖片直接使用則沒事,但是如果對它進行裁剪、縮放等操作后,它的這個imageOrientation屬性會變成0。此時這張圖片用在別的地方就會發(fā)生旋轉。

如果我們忽略orientation信息,而直接對照片進行像素處理或者drawInRect等操作,得到的結果是翻轉或者旋轉90之后的樣子。這是因為我們執(zhí)行像素處理或者drawInRect等操作之后,imageOrientaion信息被刪除了,imageOrientaion被重設為0,造成照片內(nèi)容和imageOrientaion不匹配。

所以,在對照片進行處理之前,先將照片旋轉到正確的方向,并且返回的imageOrientaion為0,但是imageOrientaion這個屬性是只讀的,那么我們就可采用Category來解決,就是Demo中的那個UIImage+FixOrientation.

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容