Ruby RMagick 调整在数据库中存储为二进制数据的图像大小

Ruby RMagick resizing images stored as binary data in a database

所以我一直在使用 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")
}

这对于存储在文件中的图像来说效果很好,但是我如何对存储在数据库中的图像做同样的事情,就像二进制数据一样,所以基本上是变量中的二进制数据。

Magick::Image.read 只不过是打开文件、读取数据,然后将该数据转换为图像数组的快捷方式。如果数据在数据库中(大概在某种 blob 列中),那么您只需使用您正在使用的任何数据库接口从数据库中读取数据,然后使用 from_blob to parse the data into a Magick::Image, resize it as usual, use 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 方法是你可能已经知道的东西的占位符。