更新:
我使用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];
答案 0 :(得分:1)
您正在通过UIImage
和UIImagePNGRepresentation(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>