imagemagickを使用して直接スクリプトを作成して、既存のイメージのサイズを変更してから(50%ずつ)、再保存してください。モデル名がModel
であり、添付書類がpicture
であると仮定すると、
puts "Finding and resizing images from models..."
invalid_models = Model.where("picture_file_size > 10_000_000")
puts "Found #{invalid_models.count} models with oversized images"
invalid_models.each do |m|
puts "Model #{m.id} has image with size #{m.picture.size}"
while(!m.valid?) do
puts "\tShrinking by 50%..."
tmp_filename = "/tmp/#{m.picture_file_name}"
%x(convert #{m.picture.url} -resize 50% #{tmp_filename})
m.picture = open(tmp_filename)
m.save(validate: false) # skip validations in case it's still too large
puts "\tNew size=#{m.picture.size}, valid?=#{m.valid?}"
end
end
puts "Done!"
出典
2017-03-17 17:22:09
Guy