首页 > 学院 > 开发设计 > 正文

Ruby on Rails下的图像处理入门教程

2019-10-26 19:25:33
字体:
来源:转载
供稿:网友

图像可以说是任何应用至关重要的一部分。从社交网络到一个简单的Bug追踪器,图像都扮演着重要的角色。然而管理图像并不是一件容易的事情,需要提前耗费大量的时间精力去计划。

本文演示了如何在Rail中实现这一目标。如何处理你的图像以及在后台创建多个版本?如何通过压缩图像又不损图像质量,以此来提高页面性能?这些且听本文一一道来。
入门

本文教程是运行于Rails 4.2,通过MongoDb数据库和HAML呈现视图。不过本文所展示的片段应该兼容任何Rails版本(尽管有些配置差异)。

布置舞台

ImageMagick是一套功能强大、稳定而且开源的工具集和开发包,你可以通过包管理把它安装在你的电脑上。

Ubuntu上:

sudo apt-get -y install imagemagicksudo apt-get -y install libmagic-devsudo apt-get -y install libmagickwand-dev

Mac OS X上,建议使用自制程序:

brew install imagemagick

现在我们需要一个连接到本地ImageMagick库的Ruby适配器。你可以使用MiniMagick,因为它是轻量级的:

# Gemfile gem 'mini_magick'

MiniMagick的特性

在正式开始之前,让我们先了解一下某些MiniMagick的特性,以避免不必要的错误。

打开Rails控制台(Rails c)并运行以下代码:

# Open an image from a website image = MiniMagick::Image.open("https://s3.amazonaws.com/StartupStockPhotos/20140808_StartupStockPhotos/85.jpg") # Get the Image's widthimage.width # 4928 # Get the image's heightimage.height #3264

让我们调整一下以适应我们的iPad:

image.resize "2048x1536" # Now get the image's new width and height p "Width is => #{image.width} and height is => #{image.height}"

更改后的文件存储在哪呢?

image.path # temp path

操纵图像存储到一个临时的路径有消失的危险。所以要把它放到磁盘中,一个简单的调用编写方法如下:

image.write "public/uploads/test.jpg"

转换图像

或许你最常见的工作之一就是将图像转换成不同的格式。MiniMagick可以简化这一过程:

image.format "png"image.write "public/uploads/test.png"

你还可以将多个操作放在同一模块中:

image.combine_options do |i| i.resize "2048x1536" i.flip i.rotate "-45" i.blur "0x15"endimage.write "public/uploads/blur.png" ![Some weird result](blur.png)

至此,让我们来看看如何将以上的这些与我们的Rails应用联系到一起。
上传文件

Carrierwave简化了在Ruby中上传文件,同时它与MiniMagick交互的也很好。

# Gemfile gem 'carrierwave'gem 'carrierwave-mongoid', :require => 'carrierwave/mongoid'            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表