专业java、php、iOS、C++、网页设计、平面设计、网络营销、游戏开发、前端与移动开发培训机构
照片选择器缩放图片
- 有些图片非常大,比如系统提供的图片.显示的图片太大,内存消耗很多,程序没有必要显示那么大的图片,新浪服务器仅支持图片小于5M.因此将选择的图片等比例缩小
- 新建
UIImage
的扩展// MARK: - UIImage扩展,等比例缩小图片到指定的宽度 extension UIImage { // }
在
UIImage
的扩展 定义scaleImage
等比例缩
小图片到指定的宽度
// MARK: - UIImage扩展,等比例缩小图片到指定的宽度 extension UIImage { /** 等比例缩小图片到指定的宽度 - parameter newWidth: 缩放后的宽度 */ func scaleImage(newWidth: CGFloat = 300) -> UIImage { // 如果图片宽度小于 newWidth, 直接返回 if size.width < newWidth { return self } // 计算缩放好后的高度 // newHeight / newWidth = height / width let newHeight = newWidth * size.height / size.width let newSize = CGSize(width: newWidth, height: newHeight) // 将图片等比例缩放到 newSize // 开启图片上下文 UIGraphicsBeginImageContext(newSize) // 绘图 draw(in: CGRect(origin: CGPoint(x: 0, y: 0), size: newSize)) // 获取绘制好的图片 let newImage = UIGraphicsGetImageFromCurrentImageContext() // 关闭绘图上下文 UIGraphicsEndImageContext() // 返回绘制好的新图 return newImage! } }
在获取到选择的图片时,将图片缩小
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { let image = info[UIImagePickerControllerOriginalImage] as! UIImage let newImage = image.scaleImage() // 将选中的图片添加到图片数组 photos.append(newImage) // collectionView 刷新数据 collectionView?.reloadData() picker.dismiss(animated: true, completion: nil) }