2013-02-10 114 views
1

是否可以將NSData/UIImage Data Representation轉換爲一個字符串,通過HTTP發送到PHP文件以將該字符串保存到數據庫中,然後在應用程序中稍後檢索並將其轉換回NSData/UIImage對象?將NSData/UIImage轉換爲字符串

我已經嘗試了Base64編碼庫,但base64似乎並不合法,因爲圖像無法在HTML頁面上正確顯示。

有什麼建議嗎?

編輯。

我用下面的庫:

http://www.imthi.com/blog/programming/iphone-sdk-base64-encode-decode.php

並以下列方式轉換:

NSData *imageData = UIImageJPEGRepresentation(MyImage.image, 90); 
[Base64 initialize]; 
NSData *encoded = [Base64 encode:imageData]; 
NSLog(@"%@",encoded); 

這不突突了很多BASE64的,但是當我將它保存到一個文件,嘗試查看它,我只是在Chrome中獲取eror loading image [?]。

感謝

+2

Base64正常工作。事實上,當你做內聯HTML圖像時,它使用Base64。你的嘗試肯定有問題。再給它一次,如果你不成功,用你的代碼更新你的問題,我們會看看它。 – Rob 2013-02-10 16:39:05

+0

更新了上面的帖子 – 2013-02-10 16:54:09

+0

作爲附註:不要將img數據存儲爲字符串。 b64適合傳輸,但對存儲不利 – 2013-02-10 17:04:25

回答

3

編碼一個NSData對象到base 64的點是如此您可以將數據表示爲可以更容易地存儲或傳輸的字符串。然後您需要將基本64編碼的字符串解碼回NSData。這些數據可以用來創建一個新的UIImage。您的服務器需要執行此解碼以獲取原始數據。

您的代碼有錯誤。這條線:

NSData *encoded = [Base64 encode:imageData]; 

應該是:

,你得到一個字符串,而不是數據
NSString *encoded = [Base64 encode:imageData]; 

通知。

您評論說您已將編碼字符串寫入文件,因此無法查看圖像。當然不是。如果要將圖像數據寫入文件,以便文件實際上可以作爲圖像查看,請不要先編碼數據。將原始圖像數據寫入文件。

-1

可以圖像轉換成字符串這樣 第一您的UIImage轉換爲NSData的&然後再轉換ATA成字符串使用encodeBase64WithData

NSString *imageOne = [self encodeBase64WithData:[imageDict objectForKey:@"ImageOne"]]; 

,再串的UIImage這樣的:

[UIImage imageWithData: [self decodeBase64WithString:[registerDataDict objectForKey:@"imageOne"]]]; 
+0

imageDict會是什麼? – 2013-02-10 16:47:02

+0

它包含NSData的,附帶轉換成UIImage的NSData的 – 2013-02-10 16:53:02

+0

後,我曾試圖impliment這一點,但我得到的錯誤「爲‘NSData的’不可見@interface聲明選擇‘objectForKey’ 執行力度: 的NSData *爲imageData = UIImageJPEGRepresentation (MyImage.image,90); NSString * imageOne = [self encodeBase64WithData:[imageData objectForKey:@「ImageOne」]]; – 2013-02-10 17:02:56

-1

您需要導入Base64.h

您可以直接使用這樣的方法:

UIImage *image = _btnaddCountryIcon.imageView.image; 
NSData *imageData = UIImagePNGRepresentation(image); 
NSString *base64 = [Base64 encode:imageData]; 

直接就可以轉換爲NSString的。這段代碼適合我。

希望這會幫助你。

+3

這並沒有回答這個問題,OP已經聲明他們已經獲得了編碼字符串。你所做的只是轉發了相同的代碼 – rmaddy 2013-02-10 17:55:27

+0

我正在使用這個東西上傳圖片,這是常見的東西 – Nirav 2013-02-10 17:59:53

+2

這不是重點,你的「答案」沒有回答這個問題,OP已經知道如何從圖像數據中獲取基本64字符串。 – rmaddy 2013-02-10 18:01:15