0

をエンコーディングで変換しUIImageましたが、データが空になります。これが私のコードです:NSStringbase64

[Base64 initialize];
    NSString *imageString = [NSString stringWithFormat:@"img:%@", [Base64 encode:UIImagePNGRepresentation(shared.image)]];
    NSData *imageData = [NSData dataWithBase64EncodedString:imageString];
    [shared.outputStream write:[imageData bytes] maxLength:[imageData length]];

何が起こっているのかわかりません!! UTF-8エンコーディングを使用すると問題なく動作しますが、UIImage imageWithData結果はnullです(それは質問の一部ではありません)。私は何を間違っていますか?


背景として、ここでの目的は、このRay Wenderlich デモを変更して、画像も送信できるようにすることです。

4

1 に答える 1

3

base64 文字列にプレフィックスを付けたimg:ため、文字列を無効な base64 にしています。文字列のデコードをテストする場合は、を削除しimg:ます。

NSString *imageString = [Base64 encode:UIImagePNGRepresentation(shared.image)];
//Data should not be nil anymore.
NSData *imageData = [NSData dataWithBase64EncodedString:imageString];

また、データから文字列に変換してから同じデータに戻す理由もありません。文字列バイトを次のように書きたいと思います"img:<base64 string>"

NSString *imageString = [NSString stringWithFormat:@"img:%@", [Base64 encode:UIImagePNGRepresentation(shared.image)]];
NSData *b64ImageData = [imageString dataUsingEncoding:NSUTF8StringEncoding];
[shared.outputStream write:[b64ImageData bytes] maxLength:[b64ImageData length]];
于 2012-12-31T18:51:04.110 に答える