0

我想将 jpeg 图像编码为 base64。谷歌搜索,我有这个代码:

name = 'path_to_file'
b64 = [open(name).read].pack('m')
puts b64.size

如果此代码使用 Jruby1.5.1 执行(与 netbeans 一起提供),则大小(使用我的图像)的结果为 3518,但如果使用 ruby​​ 1.8.7 执行,则大小为 90。传递给 html 文件,仅用 JRuby 编码的作品。

有人知道这是什么原因吗?提前致谢。注意:在Windows下运行,我没有接触过ruby1.8.7的代码。

4

2 回答 2

2

Windows 有不同的行为,具体取决于您是否以二进制模式打开文件;将该行更改为:

b64 = [open(name, 'rb').read].pack('m')
于 2011-03-04T18:11:26.270 回答
1

我在 Linux 上的 jruby 1.5.1 RVM 和 Linux 上的 Ruby 1.8.7 中得到了相同的大小。我怀疑您只是出于某种原因对路径进行编码。尝试打印open(name).read并确保您的文件已成功打开和读取。我不认为是这样。

jruby-1.5.1 :001 >  [open("test.jpg").read].pack('m').size
 => 3274 

ruby-1.8.7-p302 :003 > [open("test.jpg").read].pack('m').size
 => 3274 
于 2011-03-04T17:36:04.290 回答