在rails中显示base64编码的图像

时间:2013-11-06 11:29:29

标签: ios objective-c ruby-on-rails postgresql base64

更新

我使用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方法。它转换为长字符串,但在我的Web服务上,图像显示为已损坏。

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

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

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

2 个答案:

答案 0 :(得分:1)

您正在通过UIImageUIImagePNGRepresentation(image)进行往返,以使数据基于64进行编码。这可能与原始文件的内容不同。在编码图像时有很多选项,而且你不确定你的往返会使用相同的选项。

相反,我会建议直接加载NSData

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

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

答案 1 :(得分:0)

问题在于ruby代码。这很有效:

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