用于上传的 Swift 3 base64 编码图像
Posted
技术标签:
【中文标题】用于上传的 Swift 3 base64 编码图像【英文标题】:Swift 3 base64 encode image for upload 【发布时间】:2016-09-11 23:08:50 【问题描述】:我有一些不错的代码,可以让我拍照和图像,然后在应用程序中显示。我还将 profilePic.image 上传到我的数据库(作为一个 blob),但我意识到这实际上并不是在上传图像本身,而只是关于图像的数据,所以我无法渲染任何东西,因为没有什么可以解码。所以我想转换这个函数来获取选择的图像并将其编码为base64并利用相同的工作上传
func imagePickerController(
_ selectImage: UIImagePickerController,
didFinishPickingMediaWithInfo info: [String : AnyObject])
let chosenImage = info[UIImagePickerControllerEditedImage] as! UIImage //2
// imageByCroppingToRect()
profilePic.contentMode = .scaleAspectFit //3
profilePic.image = chosenImage //4
dismiss(animated: true, completion: nil) //5
【问题讨论】:
【参考方案1】:您必须将UIImage
转换为您的网站可以读取的格式,例如使用 base 64 编码之前的 jpeg。
let jpegCompressionQuality: CGFloat = 0.9 // Set this to whatever suits your purpose
if let base64String = UIImageJPEGRepresentation(chosenImage, jpegCompressionQuality)?.base64EncodedString()
// Upload base64String to your database
注意:在 ios 12 中 UIImageJPEGRepresentation
被 UIImage 的实例方法 jpegData
替换:
let jpegCompressionQuality: CGFloat = 0.9 // Set this to whatever suits your purpose
if let base64String = chosenImage.jpegData(compressionQuality: jpegCompressionQuality)?.base64EncodedString()
// Upload base64String to your database
请参阅 Apple 文档以了解 UIImageJPEGRepresentation 和 Data
【讨论】:
【参考方案2】:Data
有一个函数可以将自身的 base64 表示返回为另一个 Data
。无需转换为String
并返回。
查看Data.base64EncodedData()
的文档
if let data = UIImageJPEGRepresentation(photos, 0.5)?.base64EncodedData()
form.append(data, withName: "images", fileName: "photo.jpeg", mimeType: "image/jpeg")
【讨论】:
以上是关于用于上传的 Swift 3 base64 编码图像的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 3 中从 Base64 编码的字符串创建图像? [复制]
Swift 中的 Base64 编码不会在 Android 中解码
如何在 Swift 3 中将 captureStillImageAsynchronously(sampleBuffer) 转换为 base64 编码
使用 Alamofire 上传具有 base64String 编码的多个图像的数组