iOS拍照之後圖片自動旋轉90度解決辦法
今天開發一個拍照獲取照片的功能的時候, 發現上傳之後圖片會自動旋轉90.
測試發現, 只要是圖片大於2M, 系統就會自動翻轉照片
相機拍照後直接取出來的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) {
caseUIImageOrientationDown:
caseUIImageOrientationDownMirrored:
transform = CGAffineTransformTranslate(transform, aImage.size
transform = CGAffineTransformRotate(transform, M_PI);
break;
caseUIImageOrientationLeft:
caseUIImageOrientationLeftMirrored:
transform = CGAffineTransformTranslate(transform, aImage.size.width,0);
transform = CGAffineTransformRotate(transform, M_PI_2);
break;
caseUIImageOrientationRight:
caseUIImageOrientationRightMirrored:
transform = CGAffineTransformTranslate(transform, 0, aImage.size.height);
transform = CGAffineTransformRotate(transform, -M_PI_2);
break;
default:
break;
}
switch (aImage.imageOrientation) {
caseUIImageOrientationUpMirrored:
caseUIImageOrientationDownMirrored:
transform = CGAffineTransformTranslate(transform, aImage.size.width,0);
transform = CGAffineTransformScale(transform, -1, 1);
break;
caseUIImageOrientationLeftMirrored:
caseUIImageOrientationRightMirrored:
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) {
caseUIImageOrientationLeft:
caseUIImageOrientationLeftMirrored:
caseUIImageOrientationRight:
caseUIImageOrientationRightMirrored:
// 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 = [UIImageimageWithCGImage:cgimg];
CGContextRelease(ctx);
CGImageRelease(cgimg);
return img;
}
相關推薦
iOS拍照之後圖片自動旋轉90度解決辦法
今天開發一個拍照獲取照片的功能的時候, 發現上傳之後圖片會自動旋轉90. 測試發現, 只要是圖片大於2M, 系統就會自動翻轉照片 相機拍照後直接取出來的UIimage(用UIImagePickerControllerOriginalImage取出),它本身的im
iOS開發技巧之:相機獲取到的圖片自動旋轉90度解決辦法
本文轉載自這裡:http://blog.csdn.net/hitwhylz/article/details/39518463 今天寫demo的時候發現, 如果把通過相機獲取到的圖片,直接進行操作, 比如裁剪, 縮放, 則會把原圖片向又旋轉90度。 剛開始覺得莫名其妙, 不知所措。 後來百度了
iOS開發- 相機 攝像頭 獲取到的圖片自動旋轉90度解決辦法
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
iOS照相機獲取到的圖片自動旋轉90度解決辦法
情景再現: iOS開發過程中,要實現用用手機攝像頭拍一張照片,經過裁剪壓縮,然後發出去。結果發出去的圖片始終是逆時針旋轉了90度的圖片。 事出有因: 相機拍照後直接取出來的UIimage(用UIImagePickerControllerOriginalIma
關於阿里雲oss上傳圖片之後會被旋轉90度的解決辦法
問題描述:正常的圖片前端上傳到oss成功之後的資源地址。在html上引用的時候被旋轉了90度oss資源地址直接在瀏覽器開啟就不會旋轉問題原因:某些手機拍攝出來的照片可能帶有旋轉引數(存放在照片exif資訊裡面)。而oss資源上傳之後會預設自適應方向所以在img標籤中圖片就被旋轉了90度。 解決辦法:阿里雲給
關於android中呼叫系統拍照,返回圖片是旋轉90度..
由於專案的需要,沒有自定義拍照功能,僅僅呼叫了系統的拍照程式..但是出現了一個問題,就是拍照完成顯示圖片居然是被旋轉的圖片....解決辦法:/** * 獲取圖片的旋轉角度,有些系統把拍照的圖片旋轉了,有的沒有旋轉 */ int degree
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
三星手機拍照,上傳照片或者下載導致圖片旋轉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 {
Android拍照後獲得的圖片旋轉90度問題
最近一直在做一個掃描的專案,用zxing實現二維碼的掃描,需求要實現拍照並且掃描名片,發現拍照出來的照片是旋轉的。一直找原因找不到,在國外一個論壇看到說是camera獲取data資料是橫向的,沒有經過處理所以顯示就是旋轉的。想了好久還是不會實現data的旋轉,索性就將bit
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;
針對iphone手機拍照片旋轉90度問題解決
/* 1、圖片上傳的方法 */ @RequestMapping(value = "/uploadPic", method = RequestMethod.POST) @ResponseBody public JsonResult uplo
android 豎屏拍照旋轉90度
第一步: AndroidManifest.xml 在Activity新增以下一個屬性 ? <span>android:configChanges="orientation|keyboardHidden|screenSize" android:sc
圖片的每點選一次旋轉90度, filter和css3屬性
<!DOCTYPE html> <html> <head> <title> ImageRotation </title> <meta http-equiv="Conte
iOS做自定義拍照的時候影象選擇90度,為了契合iPad的拍照
可以通過獲取AVCaptureConnection,然後呼叫setVideoOrientation:方法解決影象90°問題。 比如:顯示AVCaptureVideoPreviewLayer [[_v
怎樣把PDF圖片旋轉90度
src 圖片文件 下載 本地文件 sha mark 90度 快的 mage 有些時候我們在網上下載的PDF圖片文件,在瀏覽的時候是豎著的,但是下載之後,方向就變得亂七八糟,看著很是別扭。我們現在都喜歡正直的東西,像這樣方向亂的圖片我們也不行使用,所以要怎麽樣把它旋轉回到原位