簡體   English   中英

NSData/UIImage 轉字符串

[英]NSData/UIImage to String

是否可以將 NSData/UIImage 數據表示作為 JPEG 轉換為字符串,通過 HTTP 發送到 PHP 文件以將此字符串保存在數據庫中,然后稍后在應用程序中檢索它並將其轉換回 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 中得到錯誤加載圖像 [?]。

謝謝

NSData對象編碼為 base 64 的要點是,您可以將數據表示為可以更輕松地存儲或傳輸的字符串。 然后,您需要將 base 64 編碼的字符串解碼回NSData 然后可以使用這些數據來創建一個新的UIImage 您的服務器需要進行此解碼才能取回原始數據。

你的代碼有錯誤。 這一行:

NSData *encoded = [Base64 encode:imageData];

應該:

NSString *encoded = [Base64 encode:imageData];

請注意,您返回的是字符串,而不是數據。

您評論說您將編碼的字符串寫入文件,然后無法查看圖像。 當然不是。 如果要將圖像數據寫入文件,以便文件實際上可以作為圖像查看,則不要先對數據進行編碼。 將原始圖像數據寫入文件。

您可以像這樣將圖像轉換為字符串,首先將您的 UIImage 轉換為 NSData,然后使用 encodeBase64WithData 將該 ata 轉換為字符串

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

並再次字符串到 UIImage 像這樣:

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

你需要導入Base64.h

您可以像這樣直接使用:

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

可以直接轉換為NSString。 這段代碼對我來說很好用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM