所以我一直在使用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")
}
这适用于存储在文件中的图像,但是我如何对存储在数据库中的图像执行相同的操作,就像二进制数据一样,所以基本上是变量中的二进制数据。
答案 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
方法是您可能已经想到的事情的占位符。