ios - 在 rails 中显示 base64 编码的图像

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

更新:

我获取了 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];

最佳答案

您正在通过 UIImageUIImagePNGRepresentation(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/

相关文章:

ruby-on-rails - Rails 指定验证顺序

ruby-on-rails - Ruby & Redis/Skidekiq URI::InvalidURIError:方案 redis 不接受注册表部分:bsc_redis:6379(或错误的主机名?)

iphone - 通过 IP 地址获取主机名

ios - 我们可以从iTunesConnect删除应用程序吗

objective-c - 具有全局持久存储的基于核心数据文档的应用程序

ios - Objective-c - 附加 UIImage 进行分享

ios - 从其他类访问 TabBarController 中的方法

ios - UITabBar 标题十六进制值

objective-c - NSData initWithContentsOfURL : does not return the original allocation?

ruby-on-rails - 测试 Rails 应用程序的移动 View