我使用UIImage
编码将NSString
转换为base64
,但数据结果为空。这是我的代码:
[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 demo,以便它也可以发送图像。
答案 0 :(得分:3)
您使用img:
为base64字符串添加前缀,因此使字符串无效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]];