★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-pspoyfvu-kw.html
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html
目錄:[Swift]通天遁地Swiftios
本文將演示在第三方類庫中,用來處理圖片的一些強大功能。git
首先確保在項目中已經安裝了所需的第三方庫。github
點擊【Podfile】,查看安裝配置文件。swift
1 platform :ios, ’12.0’ 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'Alamofire', '~> 4.0' 7 pod 'AlamofireImage', '~> 3.1' 8 end
根據配置文件中的相關配置,安裝第三方庫。緩存
而後點擊打開【DemoApp.xcworkspace】項目文件。服務器
在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】微信
如今開始編寫代碼,實現圖片處理功能。網絡
1 import UIKit 2 //在當前的類文件中,引入已經安裝的第三方類庫 3 import Alamofire 4 import AlamofireImage 5 6 class ViewController: UIViewController { 7 8 var imageView : UIImageView? 9 10 override func viewDidLoad() { 11 super.viewDidLoad() 12 // Do any additional setup after loading the view, typically from a nib. 13 //下載並顯示圖片 14 downloadImage() 15 16 //膨脹和恢復被壓縮圖片的數據 17 inflationImage() 18 19 //使用第三方類庫,實現圖片縮放的功能 20 scalingImage() 21 22 //使用第三方類庫,實現圖片圓角 23 roundedCorners() 24 25 //使用第三方類庫,給圖片添加棕褐色調的濾鏡,從而實現老舊照片的效果 26 coreImageFilters() 27 28 //使用第三方類庫,對下載後的圖片進行緩存處理 29 cacheImages() 30 } 31 32 //添加一個方法,用來下載一張網絡圖片,並在模擬器種顯示下載的圖片。 33 func downloadImage() 34 { 35 //調用網絡操做庫的下載方法,下載指定的服務器接口, 36 //並返回一張圖片。 37 Alamofire.request("https://httpbin.org/image/png").responseImage 38 { 39 response in 40 //在控制檯輸出:網絡返回對象 41 debugPrint(response) 42 //在控制檯輸出:網絡請求對象 43 print(response.request) 44 //在控制檯輸出:網絡返回對象 45 print(response.response) 46 //在控制檯輸出:網絡返回的結果 47 debugPrint(response.result) 48 49 //得到服務器返回的圖片 50 if let image = response.result.value 51 { 52 //並在控制檯輸出圖片的信息 53 print("image downloaded: \(image)") 54 55 //得到根視圖顯示區域的尺寸 56 let size = self.view.bounds.size 57 //建立一個圖像視圖 58 self.imageView = UIImageView(image: image) 59 //並將圖像視圖放在根視圖的中心位置 60 self.imageView?.center = CGPoint(x: size.width/2, y: size.height/2) 61 62 //將圖像視圖添加到根視圖中 63 self.view.addSubview(self.imageView!) 64 } 65 } 66 } 67 68 //添加一個方法,用來膨脹和恢復被壓縮圖片的數據, 69 //該操做能夠明顯提升圖片的渲染效率 70 func inflationImage() 71 { 72 //得到項目中的圖片所在的路徑 73 let url = Bundle.main.url(forResource: "Girl", withExtension: "png")! 74 //讀取指定名稱的圖片,並轉換爲數據格式 75 let data = try! Data(contentsOf: url) 76 //根據圖片的數據,初始化一個圖片對象 77 let image = UIImage(data: data, scale: UIScreen.main.scale)! 78 79 //執行圖片對象的擴展方法,實現對壓縮圖片的恢復。 80 //當圖片較大時,最好新建一個線程以執行該方法。 81 image.af_inflate() 82 83 //得到根視圖的顯示區域的尺寸 84 let size = self.view.bounds.size 85 //建立一個圖像視圖,用來顯示處理後的圖片 86 self.imageView = UIImageView(image: image) 87 //將圖像視圖放置在根視圖的中心位置 88 self.imageView?.center = CGPoint(x: size.width/2, y: size.height/2) 89 //將圖像視圖添加到根視圖中 90 self.view.addSubview(self.imageView!) 91 } 92 93 //添加一個方法,使用第三方類庫,實現圖片縮放的功能 94 func scalingImage() 95 { 96 //從項目中讀取一張圖片 97 let image = UIImage(named: "Girl")! 98 //初始化一個尺寸,做爲縮放後的圖片尺寸 99 let imageSize = CGSize(width: 100, height: 100) 100 101 //調用圖片的縮放方法,將圖片縮小至指定的尺寸 102 //方法1.縮放樣式:縮小 103 //let scaledImage = image.af_imageScaled(to: imageSize) 104 105 //方法2.縮放樣式:寬度和高度進行等比例的變化 106 //let aspectScaledToFitImage = image.af_imageAspectScaled(toFit: imageSize) 107 108 //方法3.寬度和高度進行等比例的變化,而且儘量的充滿指定的尺寸 109 let aspectScaledToFillImage = image.af_imageAspectScaled(toFill: imageSize) 110 111 //得到根視圖的矩形顯示區域的尺寸 112 let size = self.view.bounds.size 113 //建立一個圖像視圖,用來顯示縮放後的圖片 114 self.imageView = UIImageView(image: aspectScaledToFillImage) 115 //將圖像視圖放置在根視圖的中心位置 116 self.imageView?.center = CGPoint(x: size.width/2, y: size.height/2) 117 //將圖像視圖添加到根視圖中 118 self.view.addSubview(self.imageView!) 119 } 120 121 //添加一個方法,使用第三方類庫,實現圖片圓角 122 func roundedCorners() 123 { 124 //從項目中讀取一張圖片 125 let image = UIImage(named: "Giraffe")! 126 //設置圓角半徑大小 127 let radius: CGFloat = 20.0 128 129 //調用圖片的擴展方法,將圖片進行圓角處理 130 //let roundedImage = image.af_imageRounded(withCornerRadius: radius) 131 132 //調用圖片的擴展方法從圓角至圓形,建立一個圓形圖片 133 let circularImage = image.af_imageRoundedIntoCircle() 134 135 //得到根視圖的矩形顯示區域的尺寸 136 let size = self.view.bounds.size 137 //建立一個圖像視圖,用來顯示添加圓角後的圖片 138 self.imageView = UIImageView(image: circularImage) 139 //將圖像視圖放置在根視圖的中心位置 140 self.imageView?.center = CGPoint(x: size.width/2, y: size.height/2) 141 //將圖像視圖添加到根視圖中 142 self.view.addSubview(self.imageView!) 143 } 144 145 //添加一個方法,使用第三方類庫,給圖片添加棕褐色調的濾鏡,從而實現老舊照片的效果 146 func coreImageFilters() 147 { 148 //從項目中讀取一張圖片 149 let image = UIImage(named: "Family")! 150 151 //調用圖片的擴展方法,給圖片添加棕褐色調的濾鏡, 152 //let sepiaImage = image.af_imageFiltered(withCoreImageFilter: "CISepiaTone") 153 //記得指定給圖像視圖self.imageView = UIImageView(image: sepiaImage) 154 155 //模糊濾鏡效果 156 //設置模糊濾鏡的類型爲動態模糊,以及輸入半徑和輸入角度兩個參數 157 let blurredImage = image.af_imageFiltered(withCoreImageFilter: "CIMotionBlur",//濾鏡類型:動態模糊 158 parameters: ["inputRadius": 10,//輸入半徑 159 "inputAngle":45]//輸入角度 160 ) 161 162 //得到根視圖的矩形顯示區域的尺寸 163 let size = self.view.bounds.size 164 //建立一個圖像視圖,用來顯示添加濾鏡後的圖片 165 self.imageView = UIImageView(image: blurredImage) 166 //將圖像視圖放置在根視圖的中心位置 167 self.imageView?.center = CGPoint(x: size.width/2, y: size.height/2) 168 //將圖像視圖添加到根視圖中 169 self.view.addSubview(self.imageView!) 170 } 171 172 //添加一個方法,使用第三方類庫,對下載後的圖片進行緩存處理 173 func cacheImages() 174 { 175 //設置緩存區域大小爲100M 176 //當緩存內容超過100M時,將自動清除緩存中的內容, 177 //直到緩存區域的剩餘空間達到60M爲止。 178 let imageCache = AutoPurgingImageCache( 179 memoryCapacity: 100_000_000, 180 preferredMemoryUsageAfterPurge: 60_000_000) 181 182 //建立一個網絡請求對象,下載指定位置的網絡圖片 183 let urlRequest = URLRequest(url: URL(string: "https://httpbin.org/image/png")!) 184 185 //調用網絡操做庫的下載方法,下載指定的服務器接口, 186 //並返回一張圖片。 187 Alamofire.request("https://httpbin.org/image/png").responseImage 188 { 189 response in 190 //將下載後的數據轉換成一張圖片 191 if let image = response.result.value 192 { 193 //將下載的圖片進行緩存,並設置緩存圖片的網絡請求和標識符 194 imageCache.add(image, for: urlRequest, withIdentifier: "circleImage") 195 196 //當須要再次下載位於同一網址的圖片時,只須要指定它的網絡請求和標識符, 197 //便可從緩存中加載圖片,而無需重複下載。 198 let cachedAvatarImage = imageCache.image(for: urlRequest, withIdentifier: "circleImage") 199 200 //建立一個圖像視圖,用來顯示緩存後的圖片 201 self.imageView = UIImageView(image: cachedAvatarImage) 202 //將圖像視圖放置在根視圖的中心位置 203 self.imageView?.center = self.view.center 204 //將圖像視圖添加到根視圖中 205 self.view.addSubview(self.imageView!) 206 207 //當不須要緩存某張圖片時,只須要調用緩存對象的益處圖片功能便可。 208 imageCache.removeImage(for: urlRequest, withIdentifier: "circleImage") 209 } 210 } 211 } 212 213 override func didReceiveMemoryWarning() { 214 super.didReceiveMemoryWarning() 215 // Dispose of any resources that can be recreated. 216 } 217 }