Access denied, Please sign in and make sure you have proper permission.
minimagick/rmagick
require 'RMagick'
def resize_img
uploaded_io = params[:avatar]
if uploaded_io.nil?
redirect_to "/", status: :found, notice: "请选择头像"
return
end
name = uploaded_io.original_filename
File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'wb') do |file|
file.write(uploaded_io.read)
end
name_path = Rails.root.join('public', 'uploads', name)
img = Magick::Image.read(name_path).first
resize_width = params[:width] ? params[:width] : 200
resize_height = params[:height] ? params[:height] : 200
thumb = img.resize(resize_width , resize_height )
thumb.write(name_path)
#2 楼 @zicjin 还是推荐上传的时候就裁剪好 裁剪一次要很久的 动态裁剪的话 第一次访问的用户就尴尬了
#3 楼 @zj0713001 之前在.NET 平台一直是这样的方案,真没觉得有尴尬。缩图的资源消耗是很少的吧,而且第一次请求肯定是完全在内存里走,不会等磁盘缓存好了之后才返回图片。
#5 楼 @zicjin 啥意思?image.resize "100x100"
是 minimagick 的写法吧。这不都是 post 或者 get 传递的参数决定吗?想传多少都行啊。
你意思是
width = 100
hieght = 1 * width
没搞懂!!!
#4 楼 @zicjin 其实还是很慢的 ruby 的图片都是调用 imagemagick imagemagick 的处理是你先从 tmp 请求一个空间 然后他生成临时文件 这时候你读临时文件返回给用户 然后临时文件你再处理存缓存 这里没办法全放在内存里 resize 只设置 width 不限制 height 的参数是 '100x'
#6 楼 @flowerwrong 我本意是 height 不设限制,任意多少,保持原图高宽比例。后来发现 minimagick 默认就是这样处理,所以这个问题就作罢。