2016-12-31 59 views
0

所以,我一直在使用Rmagick庫調整紅寶石相似圖片等等紅寶石RMagick調整圖像大小作爲二進制數據存儲在數據庫中

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

而這只是正常存儲在一個文件中的圖像,但我如何爲二進制數據存儲在數據庫中的圖像做同樣的事情,所以基本上二進制數據在一個變量中。

回答

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佔位符是因爲你大概已經想清楚了。

+0

感謝的人,完美的作品。 – user2968505