在Ruby中用二进制数据创建一个图像文件

时间:2016-06-15 10:36:19

标签: ruby image binary-data

我能够访问文件的二进制数据并将其存储在像

这样的变量中
s = File.binread("sample_22122015_03.jpg")
bits = s.unpack("B*")[0]

其中bits的数据类似“101001001010100100 .......”

但是,我想做一些更改并再次将二进制数据写回新图像,但我无法做到。

我正在使用

File.open('shipping_label_new.jpg', 'wb') do|f|
f.write(Base64.decode64(bits))
end

但它不起作用,我发现图像已损坏。

2 个答案:

答案 0 :(得分:0)

String.unpack的反面是Array.pack

 :007 > bits = 'abc'.unpack("B*")
 => ["011000010110001001100011"]
 :008 > bits.pack("B*")
 => "abc"

答案 1 :(得分:0)

试试此代码

s = File.binread("test_img.jpg")
bits = s.unpack("B*")

File.open('new_test_img.jpg', 'wb') do|f|
  f.write(bits.pack("B*"))
end