iOS照相機獲取到的圖片自動旋轉90度解決辦法
情景再現:
iOS開發過程中,要實現用用手機攝像頭拍一張照片,經過裁剪壓縮,然後發出去。結果發出去的圖片始終是逆時針旋轉了90度的圖片。
事出有因:
相機拍照後直接取出來的UIimage(用UIImagePickerControllerOriginalImage取出),它本身的imageOrientation屬性是3,即UIImageOrientationRight。如果這個圖片直接使用則沒事,但是如果對它進行裁剪、縮放等操作後,它的這個imageOrientation屬性會變成0。此時這張圖片用在別的地方就會發生旋轉。imageOrientation是隻讀的,不能直接修改其值。
解決辦法:
1. 設定相機的一個屬性allowsEditing為YES,設了這個值,你拍完照片後會在照片上出現一個框框,這就是對照片的裁剪編輯。在相機的代理方法中取照片的時候就別用UIImagePickerControllerOriginalImage來取了,要用UIImagePickerControllerEditedImage。用這個key取出來的照片,它的imageOrientation是0,所以之後的任何裁剪、縮放操作都不會造成旋轉。這是第一種方法。
2.有時候你的需求是要照相結果的原圖。那麼,就要對圖片進行手動旋轉。這裡有一個專門針對這個事的很好的category。
- (UIImage *)fixOrientation:(UIImage *)aImage { // No-op if the orientation is already correct if (aImage.imageOrientation == UIImageOrientationUp) return aImage; // We need to calculate the proper transformation to make the image upright. // We do it in 2 steps: Rotate if Left/Right/Down, and then flip if Mirrored. CGAffineTransform transform = CGAffineTransformIdentity; switch (aImage.imageOrientation) { case UIImageOrientationDown: case UIImageOrientationDownMirrored: transform = CGAffineTransformTranslate(transform, aImage.size.width, aImage.size.height); transform = CGAffineTransformRotate(transform, M_PI); break; case UIImageOrientationLeft: case UIImageOrientationLeftMirrored: transform = CGAffineTransformTranslate(transform, aImage.size.width, 0); transform = CGAffineTransformRotate(transform, M_PI_2); break; case UIImageOrientationRight: case UIImageOrientationRightMirrored: transform = CGAffineTransformTranslate(transform, 0, aImage.size.height); transform = CGAffineTransformRotate(transform, -M_PI_2); break; default: break; } switch (aImage.imageOrientation) { case UIImageOrientationUpMirrored: case UIImageOrientationDownMirrored: transform = CGAffineTransformTranslate(transform, aImage.size.width, 0); transform = CGAffineTransformScale(transform, -1, 1); break; case UIImageOrientationLeftMirrored: case UIImageOrientationRightMirrored: transform = CGAffineTransformTranslate(transform, aImage.size.height, 0); transform = CGAffineTransformScale(transform, -1, 1); break; default: break; } // Now we draw the underlying CGImage into a new context, applying the transform // calculated above. CGContextRef ctx = CGBitmapContextCreate(NULL, aImage.size.width, aImage.size.height, CGImageGetBitsPerComponent(aImage.CGImage), 0, CGImageGetColorSpace(aImage.CGImage), CGImageGetBitmapInfo(aImage.CGImage)); CGContextConcatCTM(ctx, transform); switch (aImage.imageOrientation) { case UIImageOrientationLeft: case UIImageOrientationLeftMirrored: case UIImageOrientationRight: case UIImageOrientationRightMirrored: // Grr... CGContextDrawImage(ctx, CGRectMake(0,0,aImage.size.height,aImage.size.width), aImage.CGImage); break; default: CGContextDrawImage(ctx, CGRectMake(0,0,aImage.size.width,aImage.size.height), aImage.CGImage); break; } // And now we just create a new UIImage from the drawing context CGImageRef cgimg = CGBitmapContextCreateImage(ctx); UIImage *img = [UIImage imageWithCGImage:cgimg]; CGContextRelease(ctx); CGImageRelease(cgimg); return img; }
這個分類是根據圖片的imageOrientation屬性,對它進行旋轉。這個方法比較費記憶體。
相關推薦
iOS拍照之後圖片自動旋轉90度解決辦法
今天開發一個拍照獲取照片的功能的時候, 發現上傳之後圖片會自動旋轉90. 測試發現, 只要是圖片大於2M, 系統就會自動翻轉照片 相機拍照後直接取出來的UIimage(用UIImagePickerControllerOriginalImage取出),它本身的im
iOS照相機獲取到的圖片自動旋轉90度解決辦法
情景再現: iOS開發過程中,要實現用用手機攝像頭拍一張照片,經過裁剪壓縮,然後發出去。結果發出去的圖片始終是逆時針旋轉了90度的圖片。 事出有因: 相機拍照後直接取出來的UIimage(用UIImagePickerControllerOriginalIma
iOS開發技巧之:相機獲取到的圖片自動旋轉90度解決辦法
本文轉載自這裡:http://blog.csdn.net/hitwhylz/article/details/39518463 今天寫demo的時候發現, 如果把通過相機獲取到的圖片,直接進行操作, 比如裁剪, 縮放, 則會把原圖片向又旋轉90度。 剛開始覺得莫名其妙, 不知所措。 後來百度了
iOS開發- 相機 攝像頭 獲取到的圖片自動旋轉90度解決辦法
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
IOS上傳豎向圖片會旋轉90度的解決辦法
原因:iOS手機豎著拍出的照片被添加了一個順時針旋轉90°的拍照方向; 解決:讀取圖片的拍照方向資訊,糾正至正確的方向。 參考地址:http://code.ciaoca.com/javascript/exif-js/ 獲取圖片Orientation引數,=6是正
js canvas 圖片resize 旋轉90度示例
function resize(img, canvas) { var oriW = img.width; var oriH =
解決部分android手機照片被系統自動旋轉90度
使用某星手機有為應用的相簿新增圖片時,發現照片已被旋轉,APP沒有做任何處理,因此肯定是手機在拍照儲存的時候做的手腳。 1、呼叫方法 int degree = ImageUtil.getBitmapDegree(imageInfo.getImgSour
關於android中呼叫系統拍照,返回圖片是旋轉90度..
由於專案的需要,沒有自定義拍照功能,僅僅呼叫了系統的拍照程式..但是出現了一個問題,就是拍照完成顯示圖片居然是被旋轉的圖片....解決辦法:/** * 獲取圖片的旋轉角度,有些系統把拍照的圖片旋轉了,有的沒有旋轉 */ int degree
三星手機拍照,上傳照片或者下載導致圖片旋轉90°的解決辦法。
專案需求。 因為專案中需要對拍照之後的圖片進行上傳。 (這也是一個簡單的問題) 但是就是三星手機(三星note3),出現拍照之後照片旋轉了九十度。 然後我們上傳上去,然後通過其他手機請求url再次顯示還是旋轉過的。 說說我們解決問題的路徑。
蘋果手機(ios)拍照上傳圖片旋轉90度問題---java後臺處理
需要先匯入包 metadata-extractor-2.3.1.jar 地址 https://github.com/drewnoakes/metadata-extractor/releases?after=2.7.0 xmpcore-5.1.2.jar 依賴包 maven下載 med
iOS 解決圖片上傳後逆時針旋轉90度的問題
寫一個分類: #import "UIImage+Orientation.h" @implementation UIImage (Orientation) + (UIImage *)fixOrientation:(UIImage *)aImage {
關於阿里雲oss上傳圖片之後會被旋轉90度的解決辦法
問題描述:正常的圖片前端上傳到oss成功之後的資源地址。在html上引用的時候被旋轉了90度oss資源地址直接在瀏覽器開啟就不會旋轉問題原因:某些手機拍攝出來的照片可能帶有旋轉引數(存放在照片exif資訊裡面)。而oss資源上傳之後會預設自適應方向所以在img標籤中圖片就被旋轉了90度。 解決辦法:阿里雲給
IOS 圖片自動旋轉
+ (UIImageView *)rotate360DegreeWithImageView:(UIImageView *)imageView{ CABasicAnimation *animation = [ CABasicAnimation
opencv3 圖片旋轉90度
利用仿射變換實現圖片順時針旋轉90度,程式碼如下 #include<opencv.hpp> #include<iostream> using namespace std; int main() { int b = 0, g = 0, r = 255;
Android拍照後獲得的圖片旋轉90度問題
最近一直在做一個掃描的專案,用zxing實現二維碼的掃描,需求要實現拍照並且掃描名片,發現拍照出來的照片是旋轉的。一直找原因找不到,在國外一個論壇看到說是camera獲取data資料是橫向的,沒有經過處理所以顯示就是旋轉的。想了好久還是不會實現data的旋轉,索性就將bit
圖片的每點選一次旋轉90度, filter和css3屬性
<!DOCTYPE html> <html> <head> <title> ImageRotation </title> <meta http-equiv="Conte
怎樣把PDF圖片旋轉90度
src 圖片文件 下載 本地文件 sha mark 90度 快的 mage 有些時候我們在網上下載的PDF圖片文件,在瀏覽的時候是豎著的,但是下載之後,方向就變得亂七八糟,看著很是別扭。我們現在都喜歡正直的東西,像這樣方向亂的圖片我們也不行使用,所以要怎麽樣把它旋轉回到原位
如何將PDF圖片旋轉90度,盤點這個小方法
幫助 來看 狀態 搜索 src 拖拽 vpd 網上 看看吧 很多時候我們在網上下載的PDF文件中有很多圖片都是倒著的,這就需要將圖片旋轉過來使用,那麽如何將PDF文件中圖片旋轉90度?今天就來為大家盤點這個小方法,一起來看看吧。1、我們大家肯定都使用PDF圖片,但是不一定使
day4 二維數組旋轉90度
維數 div 而已 tro alt logs ron mage 重要 二維數組的旋轉其實就是數組裏面的元素對調的情況;下面有一個4×4的二維數組,[[0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]],現在要
AndroidOpenCV攝像頭預覽旋轉90度問題
將下圖檔案中的 deliverAndDrawFrame 方法 修改為 protected void deliverAndDrawFrame(CvCameraViewFrame frame){ Mat modified;