4

更新

我将 iOS 生成的 base64 字符串通过网站解码为二进制文件。该图像似乎已正确编码。

那么我的问题是关于轨道方面的事情。我正在使用以下代码显示图像,但它只是显示损坏的图像。

<td><%= ('<img src="data:image/jpg;base64,%s">' % Base64.encode64(user.imagestring)).html_safe %></td>

我正在尝试编码一个 base64 字符串以通过 JSON 发送到我的 Web 服务(使用 Postgresql 的 Rails)。我已将 UIImage 转换为 NSData,现在将其转换为 base64 字符串。

我正在使用新base64EncodedStringWithOptions方法。它转换为长字符串,但在我的网络服务上,图像似乎损坏了。

我将图像上传到 base64 转换器网站的图像,它返回的字符串略有不同。

是 iOS 编码器的问题还是我做错了什么?

UIImage *image = [UIImage imageNamed:@"image.png"];
NSData *imageData = UIImagePNGRepresentation(image);
NSString *blob = [imageData base64EncodedStringWithOptions:0];
4

2 回答 2

1

您正在进行往返UIImageUIImagePNGRepresentation(image)获取要进行 base 64 编码的数据。这可能与原始文件的内容不同。编码图像时有很多选项,你不能保证你的往返将使用相同的选项。

相反,我建议直接加载NSData

NSString *path = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"png"];
NSData *imageData = [NSData dataWithContentsOfFile:path];

尝试通过你的 base 64 编码运行它,看看你得到了什么。

于 2013-11-06T12:09:16.997 回答
0

问题出在红宝石代码上。这有效:

<td><%= ('<img src="data:image/png;base64,%s">' % user.image).html_safe %></td>
于 2013-11-06T11:51:11.847 回答