Ruby 图片上传时的裁剪和缩放详解编程语言

常见的网站,都涉及到用户的头像上传这方面,这里就需要将上传的图片经过处理后生成规定大小的头像。在ROR项目中,要对图片进行处理,首先得安装ImageMagick?-6.3.0-7-Q8-windows-dll.exe,然后安装Mini_Magick,gem install mini_magick,(RMagick也能对图片进行处理,但我没有找到裁剪函数,所以我选择使用MiniMagick?.)安装完成后在工程envirmoment.rb中添加代码require ‘mini_magick’.
由于用户上传的图片并不一定是头像所要求的尺寸,所以需要对上传的图片进行缩放,而如果图片是矩形而头像要求方形的话,缩放后图像会变形。而对图片的处理应该首先裁剪成方形,然后进行缩放,这样效果才是最好的。
具体的步骤是:

# 根据图片的宽高确定裁剪图片成正方形,并进行缩放 
#【引数】图片名 
#【返値】 
#【注意】 
#【著作】 
def save_photo(photo) 
    img = MiniMagick::Image.open(photo)     # 通过路径打开图片 
    w,h = img[:width], img[:height]         # 获得图片的宽和高 
    shaved_off = w >= h ? [((w-h)/2).round, 0] : [0, ((h-w)/2).round]  # 判断宽高,将长的一部分左右各裁一半 
    img.shave "#{shaved_off[0]}x#{shaved_off[1]}"                      # shave 裁剪函数 
    img.resize 150                                                     # 图片按150的尺寸缩放 
    img.write(photo)                                                  # 按原路径保存 
end

 

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/13420.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论