2015-10-06 59 views
2

在我的swift應用程序中,我需要將圖像轉換爲字符串,然後我需要發送到服務器,即POST。然後,如果我需要GET,我不想解碼。具有圖像文件名稱和路徑的響應。編碼字符串在swift中不工作

在線轉換器:

如果我通過網上轉換器轉換的樣本圖像,HERE.我得到下面的字符串。如果我將此字符串傳遞給API,則可以成功獲取圖像。

輸出:

iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR .... ..... CIBhIIgQRCIIEQSCAQAgmEQAIhkEAIJBAIgQRCIIEQSCAEEgiEQAIhkEAIJCgN/F + AAQAXoGXl + IGgwwAAAABJRU5ErkJggg ==

通過我的編碼

如果我轉換的樣本圖像通過編碼,我正在跟隨字符串。如果我將此字符串傳遞給API,則成功添加。但是,我無法在瀏覽器中手動查看該圖像。

More Over ,,兩個輸出字符串不一樣。我不知道爲什麼?請引導我,如何解決這個問題?

代碼:

var image : UIImage = UIImage(named: "home_recharge.png")! 
     var imageData = UIImagePNGRepresentation(image) 
     let base64String = imageData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.allZeros) 
     println("base64String \(base64String)") 

輸出:

iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAAAXNSR0IArs4c6QAAABxpRE9UAAAAAgAAAAAAAABIAAAAKAAAAEgAAABIAAAKygzM7MwAAAqWSURBVHgB7FwJ0JZDHC9yhJTkLuRMjuQ + opAr5zjGqAwZx ...... ....... FlIs5ASSDNQLA7EMtYMpBlICaQZKBYHYhlrBtIMpATSDBSLA7GMNQNpBlICaQaKxYFYxpqBNAMpgTQDxeJALGPNQJqBlECagWJxIJaxZiDNQP8B + 6MkTad9NtcAAAAASUVORK5CYII =

+0

輸出字符串不同,因爲在線轉換器和'UIImagePNGRepresentation()'可能使用不同的算法或壓縮選項。 – mixel

+0

「我無法在瀏覽器中查看該圖像」是什麼意思?你如何試圖做到這一點?當您將圖像發佈到API時,您的服務器必須從base64解碼並將其寫入文件。所以你可以打開這個文件並查看圖像。 – mixel

+0

是的,你是正確的@mixel。但是,從響應我得到圖像路徑爲「http://192.178.2。...... /image.jpg」 –

回答

1

您使用png圖像表示,但服務器使用.jpg擴展名保存圖像,因此瀏覽器嘗試將圖像作爲JPEG文件讀取並失敗。

您應該用UIImageJPEGRepresentation替換UIImagePNGRepresentation或用.png擴展名保存圖像。

儘管瀏覽器擴展名錯誤,瀏覽器仍然可以打開在線轉換器結果圖片的原因可能是UIImagePNGRepresentation剝離了其元數據和在線轉換器的圖片,因此瀏覽器無法在沒有元數據的情況下錯誤擴展圖片。