2017-06-21 91 views
-1

我有base64圖像字符串,它是使用POST請求從網頁下載的,我試圖解碼並在imageview中顯示,但它不工作。我曾嘗試幾個來源,但沒有運氣:(在imageview中顯示base64編碼圖像:SWIFT 3

let base64String = "data:image/jpg;base64,/9j/4aaQSkZJRg0BMADAE15a5df.....H/12Q==" 

目前,嘗試這種方法:

if let decodedData = Data(base64Encoded: base64String, options: .ignoreUnknownCharacter) { 
    let image = UIImage(data: decodedData) 
    ImageView.image = image 
} else { 
     print("error in decoding") 
    } 

嘗試NSData方法也:

let dataDecode:NSData = NSData(base64Encoded: base64String!, options:.ignoreUnknownCharacters)! 
let image= UIImage(data: dataDecode as Data)! 
yourImageView.image = image 

else部分始終執行我通過把編碼的字符串放在靜態變量中,並在if條件行前注意到nil,在xCode操場上試過了這個。

不確定,我做錯了什麼?

回答

0

您的base64String實際上是一個帶有數據方案的URL。內置了對這些類型的URL的支持。

你可以這樣做:

let dataString = "data:image/jpg;base64,/9j/4aaQSkZJRg0BMADAE15a5df.....H/12Q==" 
let dataURL = URL(string: dataString) 
let data = Data(contentsOf: dataURL) 
let image = UIImage(data: data) 

我把它作爲一項工作,妥善處理可選值和錯誤處理。

+0

謝謝,代碼似乎在操場上工作,因爲圖像寬度和高度顯示在'let image = UIImage(data:data)'前面,但它在項目中不起作用。 :(我正在處理'do .... catch'塊中的錯誤,我注意到'do'塊正在執行,因爲我正在打印一條消息,並且還打印了base64string以查看;如果它存在於變量中PS:I我使用swift湯姆分析器和選擇這個選擇器的圖像源:'let image = try doc.select(「。big-title> img」)。attr(「src」)' – Alena

1

小心,只有字符串的一部分表示圖像

讓base64String = 「數據:圖像/ JPG; base64,9j/4aaQSkZJRg0BMADAE15a5df ..... H/12Q ==

+0

感謝您指出。字符串來自URL字符串? – Alena