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
方法是你可能已经知道的东西的占位符。
所以我一直在使用 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
方法是你可能已经知道的东西的占位符。