目录

  • 1.安装mini_magick
  • 2.使用图像处理模块
    • 2.1获取图像实例的方式
    • 2.2获取一些图像的属性
    • 2.3对图像进行裁剪
    • 2.4图像重叠
  • 3.学习链接

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

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

【ruby】ruby图像处理模块“mini_magick”相关推荐

  1. 关于 Ruby Ruby on Rails 的一些书及论坛网站

    关于 Ruby &Ruby on Rails 的一些书及论坛网站 需要用到的一些书 The Ruby Way   Programming Ruby 2nd edition Agile Web ...

  2. python图像处理---python的图像处理模块Image

    https://blog.csdn.net/jiaoyangwm/article/details/79293272 [python图像处理]python的图像处理模块Image 版本信息:2.7.11 ...

  3. 无人机光电系统图像处理模块AVT22

    aseVision无人机光电系统图像处理模块AVT22 上海凯视力成信息科技有限公司 刘泊淼 CaseVision公司最新推出适合无人机光电系统的多功能图像处理模块AVT22.该模块提供了丰富的视频处 ...

  4. python中paste函数的作用_PIL图像处理模块paste方法简单使用详解

    python2中提供了PIL基础的图像数据出来模块,在python3中更名为了pillow模块,名字虽然发生了改变,但是提供的方法和功能都是一样的,对于日常基础的图像数据处理分析来说是足够用了的,现在 ...

  5. 开源智能相机- Xilinx Zynq-7000高清图像处理模块

    Zynq-7000图像处理模块设计资料保存:开源智能相机- Xilinx Zynq-7000高清图像处理模块 一.产品概述 Z-turn Board是一款以Xilinx Zynq-7010/7020全 ...

  6. Ruby的module(模块)

    定义模块用module...end .模块与类非常相似,但是: 模块不可以有实例对象: 模块不可以有子类. #Module(模块) module Module1   def sqrt(num, rx= ...

  7. php调用ruby,ruby、javascript、php中的观察者模式实现代码

    面试被问及到js中的观察者模式,这玩意儿早就了解过,可以说是动态语言中非常有用的一个设计模式,非常惭愧的没有系统的研究过.不过没关系,哪里不会补哪里,立刻动手,用所会的语言都实现一遍. 观察者模式 关 ...

  8. html菜鸟ruby,ruby的基础语法

    一.注释与分行 Ruby中的注释有单行与多行两种,例如: Ruby代码 puts '以下是单行注释' # 这行是单行注释,单行注释用"#" =begin 多行注释可以用" ...

  9. Ruby: Ruby脚本在测试中的使用

    如果存在以下的场景: 1. 放置在公司的读报机服务器,每天都是开启的: 2. 读报机每天下载报纸,一旦成功/失败,就会有相应的记录生成在某个xml文件中: 3. 现在有过去一年的读报机下载xml,大约 ...

  10. python的窗口处理模块_python的图像处理模块

    除了opencv专门用来进行图像处理,可以进行像素级.特征级.语义级.应用级的图像处理外,python中还有其他库用来进行简单的图像处理,比如图像的读入和保存.滤波.直方图均衡等简单的操作,下面对这些 ...

最新文章

  1. mysql的配置文件几个_mysql多实例(多个配置文件方式)
  2. set集合, 深浅拷贝, join, 列表和字典在循环中删除元素的问题, fromkeys( , )
  3. shiro系列一、认识shiro
  4. 山东财经大学python试卷_山东财经大学微观经济学试卷1及答案
  5. linux 安装sysstat使用iostat、mpstat、sar、sa
  6. 史上最全总结!Util、POJO、domain、entity、model、DAO、DTO、view、mapper、service、controller的作用和区别分析
  7. redis源码剖析(五)—— 字符串,列表,哈希,集合,有序集合
  8. 汇编程序—将一个全是字母,以0结尾的字符串,转化为大写
  9. Visual Studio下的 JS CSS 压缩和编辑插件
  10. cookie不正确 请重新登录_小学多陪,初中少陪,高中不陪!小学6年陪孩子写作业的正确方式,请家长收下!...
  11. eclipse+Maven安装和配置
  12. mysql odbc连接池_Java Mysql连接池配置和案例分析--超时异常和处理
  13. javascript 使用drop元素实现拖动(ondragstart、ondrag、 ondragend、ondragenter,ondragover、ondragleave、ondrop )
  14. 软件测试基础—易用性测试
  15. java中this有什么作用_Java中this有什么用
  16. AutoRunner 功能自动化测试项目实训之认识自动化测试工具AutoRunner(二)
  17. 【MindSpore易点通】一站式指南
  18. c++直角空心三角形_2019秋人教版八年级数学上册三角形教材全解读
  19. 小程序源码:修复登录接口仿抽奖助手-多玩法安装简单
  20. 什么是BFC?BFC的形成条件?BFC的应用场景

热门文章

  1. java int 转 object_在java上将int转换为Object
  2. 内存颗粒和闪存颗粒的区别_什么是内存颗粒以及内存颗粒的种类和差别
  3. PCAN-Explorer5 基本使用方法
  4. js 截取长图(html2canvas),并下载
  5. 在树莓派3上使用红外遥控器控制libreELEC和Raspbian系统
  6. 微信小程序自定义tab切换组件
  7. app抓包工具_安卓APP逆向入门分析——破解某APP登陆请求参数
  8. Struts 2的基石——拦截器(Interceptor)详细讲解
  9. 企业微信的一周小结是怎么统计的?
  10. 公众号下面显示一排服务器,新技能get 微信公众号文章花式排版大法