iOS 手機照片上傳伺服器方向不對的原因以及解決方法
蘋果手機上傳圖片到伺服器,發現圖片方向不對,實踐發現:
1:原因: 相機拍照後直接取出來的UIimage(用UIImagePickerControllerOriginalImage取出),它本身的imageOrientation屬性是3,即UIImageOrientationRight。如果這個圖片直接使用則沒事,但是如果對它進行裁剪、縮放等操作後,它的這個imageOrientation屬性會變成0。此時這張圖片用在別的地方就會發生旋轉。(手機豎著拍則為UIImageOrientationRight,手機橫著拍為UIImageOrientationUp)
2: imageOrientation是隻讀的,不能直接修改其值。
解決方法:
1. 設定相機的一個屬性allowsEditing為YES,設了這個值,你拍完照片後會在照片上出現一個框框,這就是對照片的裁剪編輯。在相機的代理方法中取照片的時候就別用UIImagePickerControllerOriginalImage來取了,要用UIImagePickerControllerEditedImage。用這個key取出來的照片,它的imageOrientation是0,所以之後的任何裁剪、縮放操作都不會造成旋轉。
2.由於開發中經常要對原圖進行裁剪和壓縮,所以第一種方法就不可取了,於是用第二種方法
//調整圖片方向
+ (UIImage *)fixOrientation:(
if (srcImg.imageOrientation ==UIImageOrientationUp) return srcImg;
CGAffineTransform transform =CGAffineTransformIdentity;
switch (srcImg.imageOrientation) {
caseUIImageOrientationDown:
caseUIImageOrientationDownMirrored:
transform = CGAffineTransformTranslate(transform, srcImg.
transform = CGAffineTransformRotate(transform,M_PI);
break;
caseUIImageOrientationLeft:
caseUIImageOrientationLeftMirrored:
transform = CGAffineTransformTranslate(transform, srcImg.size.width,0);
transform = CGAffineTransformRotate(transform,M_PI_2);
break;
caseUIImageOrientationRight:
caseUIImageOrientationRightMirrored:
transform = CGAffineTransformTranslate(transform,0, srcImg.size.height);
transform = CGAffineTransformRotate(transform, -M_PI_2);
break;
caseUIImageOrientationUp:
caseUIImageOrientationUpMirrored:
break;
}
switch (srcImg.imageOrientation) {
caseUIImageOrientationUpMirrored:
caseUIImageOrientationDownMirrored:
transform = CGAffineTransformTranslate(transform, srcImg.size.width,0);
transform = CGAffineTransformScale(transform, -1,1);
break;
caseUIImageOrientationLeftMirrored:
caseUIImageOrientationRightMirrored:
transform = CGAffineTransformTranslate(transform, srcImg.size.height,0);
transform = CGAffineTransformScale(transform, -1,1);
break;
caseUIImageOrientationUp:
caseUIImageOrientationDown:
caseUIImageOrientationLeft:
caseUIImageOrientationRight:
break;
}
CGContextRef ctx =CGBitmapContextCreate(NULL, srcImg.size.width, srcImg.size.height,
CGImageGetBitsPerComponent(srcImg.CGImage),0,
CGImageGetColorSpace(srcImg.CGImage),
CGImageGetBitmapInfo(srcImg.CGImage));
CGContextConcatCTM(ctx, transform);
switch (srcImg.imageOrientation) {
caseUIImageOrientationLeft:
caseUIImageOrientationLeftMirrored:
caseUIImageOrientationRight:
caseUIImageOrientationRightMirrored:
CGContextDrawImage(ctx,CGRectMake(0,0,srcImg.size.height,srcImg.size.width), srcImg.CGImage);
break;
default:
CGContextDrawImage(ctx,CGRectMake(0,0,srcImg.size.width,srcImg.size.height), srcImg.CGImage);
break;
}
CGImageRef cgimg =CGBitmapContextCreateImage(ctx);
UIImage *img = [UIImageimageWithCGImage:cgimg];
CGContextRelease(ctx);
CGImageRelease(cgimg);
return img;
}
直接傳入圖片,得到糾正方向後的圖片相關推薦
iOS 手機照片上傳伺服器方向不對的原因以及解決方法
蘋果手機上傳圖片到伺服器,發現圖片方向不對,實踐發現: 1:原因: 相機拍照後直接取出來的UIimage(用UIImagePickerControllerOriginalImage取出),它本身的imageOrientation屬性是3,即UIImageOrienta
iOS 拍照上傳慢,壓縮上傳圖片---你沒有想到的解決方法
上傳圖片的正確方式:上傳圖片到伺服器一般是將圖片NSData上傳到伺服器,伺服器返回一個圖片NSString地址,之後再將NSString的路徑轉為url並通過url請求去更新圖片(圖片此時更新的便是NSString)上傳的圖片一般壓縮方式是: NSData *eachImg
百度ueditor編輯器asp版本地配置成功伺服器上不能上傳圖片提示500錯誤的解決方法
使用百度開源ueditor編輯器不能上傳圖片並報伺服器500錯誤。 初看是 Uploader.Class 的 fs.CreateFolder( path ) 這條語句不能建立目錄,懷疑許可權問題,提供所有許可權後,依然不行。 最後參考百度官方文件將該程式碼內函式 修改A
winscp上傳後,檔名亂碼的解決方法
前言 以前不大會用winscp, 上傳檔案到debian伺服器時,用的都是剛裝好的winscp的預設設定。 以前也用其他上傳工具傳過目錄到debian伺服器。 後來要下載已經上傳到伺服器的檔案時,發現檔名亂碼。 檔名亂碼分2種情況: 用SecureCRT連上伺服器後的控制檯上
Nginx出現413 Request Entity Too Large錯誤解決方法,phpmyadmin匯入mysql資料庫提示,您想上傳更大的檔案/您可能想上傳更大的檔案的解決方法
Nginx出現413 Request Entity Too Large錯誤解決方法Nginx出現的413 Request Entity Too Large錯誤,這個錯誤一般在上傳檔案的時候出現解決方法:開啟nginx主配置檔案nginx.conf,一般在/usr/local/
R 安裝包(上傳資料)失敗時的解決方法
R中控制代碼錯誤: 提示程式碼: Error in curl::curl_fetch_memory(url, handle = handle) : Problem with the SSL CA cert (path? access rights?)| Leaving
iOS scrollview不能滑動的幾個原因及解決方法
最常見的原因是 : contentSize 這個屬性,比uiscrollview的frame要小, 無需滾動, 自然就滾動不了。 scrollenabled 這個屬性,標識著是否允許滾動,要言設成yes 另外還有一些比較隱蔽的原因: 如果這個sc
安裝SQL2005出現伺服器啟動失敗或者安裝後啟動伺服器失敗的原因及解決方法
紀念一下,本人在社群的第一篇部落格,在經歷了兩天無數重複的解答和失敗的嘗試後,終於找到了解決辦法,希望可以幫到其他人,同時表達一下對各社群翻來覆去的無用解答的憤慨。具體安裝過程可以參考郝斌老師的教程。點選開啟連結下面我分享一下我所經歷的失敗:安裝過程中的錯誤:1.安裝SQL時
mysql安裝不上怎麼辦 mysql安裝失敗原因和解決方法
困難1:MySQL 5.1 安裝過程中報apply security setting錯誤 1.解除安裝MySQL。 2.刪除目錄 C:\Documents and Settings\All Users\Application Data\MySQL。 3.重新安裝MySQL就OK啦。 困難2:MySQL提示C
安卓手機提示安裝包解析失敗的原因及解決方法
4、記憶體卡問題手機記憶體卡的預設格式是FAT,如果你使用電腦將記憶體卡進行格式化時,選擇FAT32的選項,那麼這也可能導致程式安裝處問題。當然還有另外一種可能,就是記憶體卡本身有問題,這個大家試試更換一張記憶體卡試試。 如果不是記憶體卡損壞導致程式無法解析的話,大家可以在手機上對記憶體卡進行格式化(本人親測
蘋果手機(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
手機壓縮 上傳照片/刪除照片
// 生成識別碼 var dates = new Date(); var tIdentifier = dates.getTime(); var identifier = String(tIdentifier) + parseInt(Math.
手機怎麼錄照片上傳到抖音短視訊,這個必須要知道。
經常玩抖音的朋友可能一直在好奇,有些人上傳的並不是連續的視訊,而是一張一張的照片,並且照片上還有相應的配文,其實原理和上傳的視訊是一樣的,需要提前將這些圖片做成一個圖集的視訊形式,然後在上傳到抖音,那這些圖集是怎樣錄製的呢? 方法/步驟: 1.首先先在手機設定中找
IOS 視訊上傳伺服器
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.requestSerializer.timeoutInterval = 20; manager
調整上傳伺服器圖片的方向
CGContextDrawImage(ctx, CGRectMake(0,0,theImage.size.height,theImage.size.width), theImage.CGImage);
Java後臺伺服器接收IOS客戶端上傳的圖片
// 定義變數儲存圖片地址 String imagePath=""; // 接收圖片資料 (base64) String image=httpRequest.getParameter("imag
iOS app一鍵打包並上傳伺服器
打包指令碼使用方法 1.開啟終端 2.在終端中直接拉兩個檔案路徑 到這裡就完成了一鍵打包的工作。 注: 1.中間如果出現提示下面這個錯誤: xcrun: error: unable to find utility “Pac
使用SurfaceView實現手機息屏狀態下的靜默拍照儲存,上傳伺服器
注意:本文章只適用於技術交流,請你友好交流淨化開發環境 思考 由於谷歌強制在Android應用開發中編寫拍照程式是必需要有影象預覽的。這對那些惡意程式比如Android中氾濫的Service在後臺偷偷記錄手機使用者的行為與周邊資訊。這樣的門檻還包括手機
Android 語音播放和錄製以及轉換mp3,上傳伺服器,ios親測可用
最近在做一個類似微信,QQ語音錄製,上傳資料庫,並進行播放,根據錄製的時間長短,顯示出來的語音條長短也會發生變化,以及在錄製時動畫等,以及適應iOS,對錄製的音訊,進行格式轉換. 下面就讓我們看一下具體的實現吧 先看需要新增的許可權, <uses-permiss
微信公眾號開發《四》使用微信JS-SDK實現手機圖片上傳,支援壓縮、預覽。並下載圖片到自身伺服器
在這貼上上三篇博文連結,方便大家查閱互相學習: 本次講解微信開發第四篇:呼叫微信JS-SDK實現上傳手機圖片到伺服器,是非常常見的功能。如我們看到的使用者上傳頭像 下面是本次要實現的效果圖,支援預覽,壓縮上傳(自帶,可引數控制) 1.準備工作:工欲善其事,必先利其