[英]Base64 image encoding Swift 4 iOS
我有以下代碼從庫中選擇一個圖像,然后使用base64encode進行將來的上載...已選擇該圖像並根據需要顯示在應用中...但是在輸出中出現此錯誤
發現擴展時遇到[發現]錯誤:錯誤域= PlugInKit代碼= 13“查詢已取消” UserInfo = {NSLocalizedDescription =查詢已取消}
如果我在輸出中使用打印的base64代碼,並使用網絡工具( https://www.base64decode.org/ )嘗試對上述信息進行解碼,以確認其有效,然后再開始在iOS中進行解碼-看來是畸形的嗎? 我假設我還沒有正確編碼圖像?
@IBAction func selectImage(_ sender: AnyObject) {
selectImage.allowsEditing = true //2
selectImage.sourceType = .photoLibrary //3
present(selectImage, animated: true, completion: nil)//4
}
func imagePickerController(_ selectImage: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
let chosenImage = info[UIImagePickerControllerEditedImage] as! UIImage //2
profilePic.contentMode = .scaleAspectFit //3
profilePic.image = chosenImage //4
let quality = 1.0
base64String = (UIImageJPEGRepresentation(chosenImage, CGFloat(quality))?.base64EncodedString())!
print (base64String)
self.dismiss(animated: true, completion: nil) //5
}
我在我的項目中使用了這兩個函數,並且工作正常。
func imageTobase64(image: UIImage) -> String {
var base64String = ""
let cim = CIImage(image: image)
if (cim != nil) {
let imageData = image.highQualityJPEGNSData
base64String = imageData.base64EncodedString(options: NSData.Base64EncodingOptions.lineLength64Characters)
}
return base64String
}
func base64ToImage(base64: String) -> UIImage {
var img: UIImage = UIImage()
if (!base64.isEmpty) {
if let decodedData = Data(base64Encoded: base64 , options: NSData.Base64DecodingOptions.ignoreUnknownCharacters) as Data {
let decodedimage = UIImage(data: decodedData)
img = (decodedimage as UIImage?)!
}
}
return img
}
我還有一個擴展程序來處理可能有用的圖像質量:
extension UIImage {
var highestQualityJPEGNSData:NSData { return UIImageJPEGRepresentation(self, 1.0)! as NSData }
var highQualityJPEGNSData:NSData { return UIImageJPEGRepresentation(self, 0.75)! as NSData}
var mediumQualityJPEGNSData:NSData { return UIImageJPEGRepresentation(self, 0.5)! as NSData }
var lowQualityJPEGNSData:NSData { return UIImageJPEGRepresentation(self, 0.25)! as NSData}
var lowestQualityJPEGNSData:NSData { return UIImageJPEGRepresentation(self, 0.0)! as NSData }
}
//對於Swift 4.2-修改后的擴展
extension UIImage {
var highestQualityJPEGNSData:NSData { return self.jpegData(compressionQuality: 1.0)! as NSData }
var highQualityJPEGNSData:NSData { return self.jpegData(compressionQuality: 0.75)! as NSData}
var mediumQualityJPEGNSData:NSData { return self.jpegData(compressionQuality: 0.5)! as NSData }
var lowQualityJPEGNSData:NSData { return self.jpegData(compressionQuality: 0.25)! as NSData}
var lowestQualityJPEGNSData:NSData { return self.jpegData(compressionQuality: 0.0)! as NSData }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.