更新:
我获取了 iOS 生成的 base64 字符串,并通过网站将其解码为二进制文件。图像似乎已正确编码。
然后我的问题是关于事物的 rails 方面。我正在使用以下代码显示图像,但它只显示损坏的图像。
<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];
最佳答案
您正在通过 UIImage
和 UIImagePNGRepresentation(image)
进行往返,以获取要进行 base 64 编码的数据。这可能与原始文件的内容不同。对图像进行编码时有大量选项,您不能保证往返会使用相同的选项。
相反,我建议直接加载 NSData
:
NSString *path = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"png"];
NSData *imageData = [NSData dataWithContentsOfFile:path];
尝试通过 base 64 编码运行它,看看会得到什么。
关于ios - 在 rails 中显示 base64 编码的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19810929/