【ruby】ruby图像处理模块“mini_magick”

记录一篇关于图像处理的模块,工作中有些场景可能用得上.

1.安装mini_magick

通过gem(ruby的包管理工具)安装就好:gem install mini_magick
注意: 如果在运行代码时,报错了我这里列举两个错误,大家可以参考一下

 `rescue in validate!': You must have ImageMagick or GraphicsMagick installed (MiniMagick::Invalid)
  • 上面的错误是说你缺少依赖,因为用的是mac,所以我们这边直接装就好了,“ImageMagick”和“GraphicsMagick”装一个就好: brew install ImageMagick
Reason: tried: '/opt/homebrew/opt/glib/lib/libglib-2.0.0.dylib' (no such file)
  • 这个错误可能跟你上面安装ImageMagick缺少了一个glib依赖,我们这边手动装一下就好了: brew install glib

2.使用图像处理模块

2.1获取图像实例的方式

文件名: get_image_instance.rb

# 引入图像处理模块
require 'mini_magick'

# 1.通过文件路径和名称获取实例
img = MiniMagick::Image.open('./login.png')

# 2.通过流的方式获取图像实例
image = File.open './login.png'
file_img = MiniMagick::Image.read image

# 有人会问这里为什么要多此一举,实际上不是,第二种方式想表明的是你可以通过传入base64字符串获取图像实例,有时候我们截图之后我们可以直接拿到base64字符串,就不需要本地去保存,节省我们的io

2.2获取一些图像的属性

文件名: get_attribute.rb

# 引入图像处理模块
require 'mini_magick'

# 获取图像实例(同文件目录下放一张login.png的图片)
img = MiniMagick::Image.open('./login.png')

# 列举一些常用的
# 查看图像的长宽
w,h = img[:width],img[:height]
p w, h

# 查看图像大小
p img[:size]

# 查看图像类型
p img[:type]

# 查看图像数据
p img[:data]

# 查看图像详情
p img[:details]

2.3对图像进行裁剪

文件名: crop_example.rb

# 引入图像处理模块
require 'mini_magick'

# 获取图像实例(同文件目录下放一张login.png的图片)
img = MiniMagick::Image.open('./login.png')

# 对图片中特定位置的图像进行裁剪
# width(图像宽度), height(图像高度), left(图像距离左边框的距离), top(图像距离上边距的距离)
# img.crop("widthxheight+left+top") 
img.crop("500x500+500+500")
# 将裁剪的结果图片保存到指定路径中
img.write("./login.png")

2.4图像重叠

文件名:overlapping_images.rb

# 引入图像处理模块
require 'mini_magick'

# 同目录下准备你要重叠的两张图片
first_image = MiniMagick::Image.open "./first.jpg"
second_image = MiniMagick::Image.open "./second.jpg"
result = first_image.composite(second_image) do |c|
  c.compose "Over" # 设置让second图像在first上方
  c.geometry "+20+20" # 将 second_image 从 (20, 20) 复制到 first_image
end
# 将裁剪的结果图片保存到指定路径中
result.write "./output.jpg"

3.学习链接

详细文档: https://rubydoc.info/gems/mini_magick/MiniMagick/Image

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值