1. 程式人生 > >iOS 解決圖片上傳後逆時針旋轉90度的問題

iOS 解決圖片上傳後逆時針旋轉90度的問題

寫一個分類:


#import "UIImage+Orientation.h"

@implementation UIImage (Orientation)

+ (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; } @end

這個方法是在從相簿獲取照片的時候呼叫的,如果你把照片寫到沙盒中,這個方法就失效了。

相關推薦

iOS 解決圖片逆時針旋轉90的問題

寫一個分類: #import "UIImage+Orientation.h" @implementation UIImage (Orientation) + (UIImage *)fixOrientation:(UIImage *)aImage {

layui 富文字 圖片 端PHP介面

layui 富文字 圖片上傳 後端PHP介面 html <!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="/static/layui/

微信公眾號 IOS圖片只儲存一張

wx.chooseImage({ count:imgCount, needResult: 1, sizeType:['original', 'compressed'], sourceType:['album', 'camera'], success:function(res){ ShowOKbt(false

iOS圖片

開始學習Objc20多天了,最近在弄多檔案上傳,在網上找了些程式碼,只是單檔案的,折騰了兩天,終於改成多檔案上傳的了。 xcode 6.1 iOS 8.0測試成功 希望別的人不要像我一樣花時間在修改上。時間就是生命啊。。 +(NSString *)PostImagesToSe

tp5 圖片 按照當前控制器/年份/月份日期 新建檔案

按照要求的話  有兩種解決方法 1-當前控制器中的圖片上傳的方法 $info = $file->move(ROOT_PATH . 'public' . DS . 'upload' . DS .

[iOS]APP打包在構建版本中不顯示

最近經常遇到上傳完二進位制檔案後在構建版本中找不到的情況: 環境:Xcode 8.2 (8C38) 大致有幾種原因,可以按照以下步驟排查下。 排查步驟: 1.檢查使用的許可權,並info.plist檔案中新增許可權說明: 許可權

springmvc圖片壓縮處理

後臺程式碼: @RequestMapping(value = "/imageUpload", method = RequestMethod.POST) public @ResponseBody JsonResult imageUpload(HttpServletRequ

JSP使用ckfinder實現中文圖片,無法顯示,主要是tomcat不支援中文路徑

 在前面實現的圖片上傳時,如果上傳的中文路徑圖片,則無法顯示; 主要原因tomcat伺服器預設 ISO-8859-1,不支援中文路徑,需要修改Tomcat\conf下的server.xml

Vue專案整合ueditor。解決圖片及跨域問題

1:下載ueditor下來,放在vue專案中的static資料夾下2:建立ueditor編輯介面3:椰~~~~~此時已經可以使用了但是你會發現(黑人臉)what the fuck??????????看下面    如果你只是搞前端介面,那就到此結束不用往下看了,剩下的是給苦逼後

Umeditor結合Spring Restful解決圖片跨域問題

專案中編輯器採用了Umeditor,但是由於跨域的問題,上傳圖片不能正常使用,本文解決了Spring應用的跨域問題,Spring的專案均可以參考。 專案背景 (任何不談背景的解決方案都是耍流) Umeditor+spring mvc restful,前

iOS AFNetworking 圖片(修改使用者頭像功能)

今天在處理APP中使用者資訊這裡,遇到了上傳與使用者修改頭像的問題,在網上查閱一些資料之後完成了,寫了一下。貼上來供大家看看。 可以看到 在點選上部ImageView 的時候呼叫相簿去選擇某張圖片。 下面貼出點選圖片後代碼: #pragma mar

求原始矩陣逆時針旋轉90的矩陣(CCF)

package com.lck; import java.util.Scanner; public class Main3 { /* 問題1 問題描述   旋轉是影象處理的基本操作,在這個問題中,你需要將一個影象逆時針旋轉90度。   計算機中的影象表示可以用

強制橫屏 利用 CSS3 旋轉 對根容器逆時針旋轉 90

var detectOrient = function() { var width = document.documentElement.clientWidth, height = document.documentElement.clientHeight,

IOS豎向圖片旋轉90解決辦法

原因:iOS手機豎著拍出的照片被添加了一個順時針旋轉90°的拍照方向; 解決:讀取圖片的拍照方向資訊,糾正至正確的方向。 參考地址:http://code.ciaoca.com/javascript/exif-js/ 獲取圖片Orientation引數,=6是正

圖片】移動端圖片旋轉、壓縮的解決方案

dex adding .com pad 移動 side www shu add 移動端圖片上傳旋轉、壓縮的解決方案 來源 知乎 作者 林鑫 工作上有手機上傳準考證等圖片的功能,這個是非常必要的,作者寫的很全面,就直接記錄這個地址了 還有一篇 文件的上傳、下載

蘋果手機(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

小程式圖片用upng轉base64 圖片旋轉180的問題 (ios

最近業務需要:將圖片轉為base64格式。  so~~~;百度n多資料最後寫成,還是有一點小bug就是生成的圖片不太清晰;  文章最後還有程式碼的下載地址 參考資料: 微信小程式文件-wx.canvasGetImageData UPNG.js下載地址&nb

關於阿里雲oss圖片之後會被旋轉90解決辦法

問題描述:正常的圖片前端上傳到oss成功之後的資源地址。在html上引用的時候被旋轉了90度oss資源地址直接在瀏覽器開啟就不會旋轉問題原因:某些手機拍攝出來的照片可能帶有旋轉引數(存放在照片exif資訊裡面)。而oss資源上傳之後會預設自適應方向所以在img標籤中圖片就被旋轉了90度。 解決辦法:阿里雲給

前端把圖片轉為base64,解決手機圖片自動旋轉的問題

使用這個首先要下載exif.js。jsp頁面引用這個js,下載連結:https://link.jianshu.com?t=http://code.ciaoca.com/javascript/exif-js/jsp部分:上傳圖片:<input type="file" ac

iOS多張圖片多執行緒處理方法(可獲取最後一張狀態的訊號)

環境重現 1,服務端提供單張上傳的介面。 2,客戶端需求同時提交多張圖片上傳。 3,使用AFNetWorking 或 自封裝的帶有block回撥網路狀態的框架。 思路 1,建立一個管理類。 2,提供一個單例方法。保證管理類唯一 3,提供一個公共