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结果为空(这不是问题的一部分)。我究竟做错了什么?


作为背景,这里的目的是修改这个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 回答