Ruby RMagick将存储为二进制数据的图像调整为数据库

时间:2016-12-31 21:19:39

标签: ruby imagemagick rmagick

所以我一直在使用Rmagick库来调整ruby中的图像大小如此

require 'RMagick'
image = Magick::Image.read(filename).first
image.change_geometry!("640x480") { |cols, rows, img|
    newimg = img.resize(cols, rows)
    newimg.write("newfilename.jpg")
}

这适用于存储在文件中的图像,但是我如何对存储在数据库中的图像执行相同的操作,就像二进制数据一样,所以基本上是变量中的二进制数据。

1 个答案:

答案 0 :(得分:2)

Magick::Image.read只是打开文件,读取数据,然后将数据转换为图像数组的捷径。如果数据在数据库中(可能在某种blob列中),那么您只需使用您正在使用的任何数据库接口从数据库中读取数据,然后使用from_blob将数据解析为Magick::Image,像往常一样调整大小,使用to_blob获取原始数据,并像往常一样将该blob写入数据库:

image = Magick::Image.from_blob(raw_binary_data_from_your_database).first
image.change_geometry!('640x480') do |cols, rows, img|
  newimg = img.resize(cols, rows)
  write_bytes_to_database(newimg.to_blob)
end

我不知道您是如何访问数据库的,因此raw_binary_from_your_database变量和write_bytes_to_database方法是您可能已经想到的事情的占位符。