1

NSData / UIImageデータ表現をJPEGとして文字列に変換し、HTTP経由でPHPファイルに送信してこの文字列をデータベースに保存し、後でアプリケーションで取得してNSData/に戻すことはできますか? UIImageオブジェクト?

Base64エンコーディングライブラリを試しましたが、画像がHTMLページに正しく表示されないため、base64が有効ではないようです。

助言がありますか?

編集。

私は次のライブラリを使用していました:

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で誤った読み込み画像[?]が表示されます。

ありがとう

4

3 に答える 3

3

NSDataオブジェクトをbase64にエンコードするポイントは、データをより簡単に保存または転送できる文字列として表すことができるようにすることです。次に、base64でエンコードされた文字列をにデコードして戻す必要がありますNSData。このデータを使用して、新しいを作成できますUIImage。サーバーは、元のデータを取得するためにこのデコードを実行する必要があります。

コードに誤りがあります。この行:

NSData *encoded = [Base64 encode:imageData];

する必要があります:

NSString *encoded = [Base64 encode:imageData];

データではなく文字列が返されることに注意してください。

エンコードされた文字列をファイルに書き込んだ後、画像を表示できなかったとコメントしました。もちろん違います。画像データをファイルに書き込んで、ファイルを実際に画像として表示できるようにする場合は、最初にデータをエンコードしないでください。生の画像データをファイルに書き込みます。

于 2013-02-10T17:02:07.970 に答える
-1

このように画像を文字列に変換できます。最初にUIImageをNSDataに変換してから、encodeBase64WithDataを使用してそのataを文字列に変換します。

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

また、次のようにUIImageに文字列を入力します。

[UIImage imageWithData: [self decodeBase64WithString:[registerDataDict objectForKey:@"imageOne"]]];
于 2013-02-10T16:45:25.010 に答える
-1

Base64.hをインポートする必要があります

次のように直接使用できます。

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

直接NSStringに変換できます。このコードは私にとってはうまく機能します。

于 2013-02-10T17:44:06.350 に答える