首先rmagick是一个图形处理库,需要ImageMagick的支持.
在安装了imagemagick库之后,你可以直接用如下命令查看其所支持的图片格式:
convert -version
#输出如下:
Version: ImageMagick 6.9.7-9 Q16 x86_64 2017-02-18 http://www.imagemagick.org
Copyright: © 1999-2017 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: Cipher DPC Modules
Delegates (built-in): bzlib freetype jng jpeg ltdl lzma png tiff xml zlib
如果不支持png,你可能要单独安装libpng库.
rmagick的帮助文档在 : http://www.rubydoc.info/gems/rmagick/
其github官站为 : https://github.com/rmagick/rmagick
不过可能是版本原因,有些方法和属性没有列出,你可以到google去查找.
rmagick可以打开一个图片然后处理:
Magick::Image.read(image_path).first
你可以缩放图片,加水印,反转,模糊,灰化,加边框,加阴影等等各种任性操作,请自行谷歌之…
你还可以直接从内存创建Image对象:
img_content = File.open(image_path).read
Magick::Image.from_blob(img_content)
你还可以随时返回一个图片的字节数据:
img.to_blob
有时你事先还想判断一个文件是否为合法的图片,仅仅靠文件名后缀当然是不够的,这个世界套路够深,所以你必须检查文件实际内容.这个需要另外的gem:ruby-filemagic,对应你要安装libmagic库:
brew install libmagic
然后你可以检查是否为合法的图片文件:
if FileMagic.new(FileMagic::MAGIC_MIME).file(staff[:image].path).match(/image/)
#合法图片
else
#非法图片
end
PS:若你觉得rmagick太大太复杂,你也可以选择更为小巧的mini_magick库 ;)