红宝石的贵宾图像处理图书馆。是否有任何良好实例的使用情况?
-
13-12-2019 - |
题
我完全新的对图像的处理。我什么都不知道关于什么是JPEG内部以及它是如何工作的。
我不知道,如果我可以找个地方一块红宝石码执行下列操作简单:
- 开jpeg文件。
- 迭代过每一像素,并设定它的颜色以外汇绿色的。
- 写信的结果对另一个文件。
我特别感兴趣的是如何这可通过使用红宝石的贵宾图书馆
https://github.com/ender672/ruby-vips
我的目标-学习如何执行的基本图像处理操作使用红宝石的贵宾(gamma修正,亮,色彩,...)
任何链接的工作实例更为复杂的'hello world'-像一个在红宝石的重要人物的审查页会将非常感谢!
如果有替代品,红宝石的贵宾,我会很感激他们。
更新
发生了许多事情,因为我问这个问题:
- 红宝石的贵宾是一个宝石: http://libvips.blogspot.co.uk/2012/06/ruby-vips-launches.html
- 完全改写为vips8,现在根据红宝石ffi
- 源代码库是在这里: https://github.com/jcupitt/ruby-vips/
- 例的使用情况: https://github.com/jcupitt/ruby-vips/wiki/Examples
- 基本概念的贵宾图像处理: https://github.com/jcupitt/ruby-vips/wiki/Basic-concepts
- 红宝石的贵宾纳入CarrierWave上传插于红宝石在轨道上: https://github.com/eltiare/carrierwave-vips
- 红宝石的贵宾是一个正式的后端,为ActiveStorage在rails6
解决方案
更新 红宝石的贵宾已经改变了一点,因为这个答案编写的。我已经修订了它当前(在2018年)版本。
我是一个维护者的libvips,图像处理图书馆红宝石的贵宾包裹。
蒂姆的红宝石的贵宾库没有被碰过一段时间。我有一个叉子在这里工作与目前的libvips:
https://github.com/jcupitt/ruby-vips
有一些例子:
https://github.com/jcupitt/ruby-vips/tree/master/example
设红色和蓝色通道为零,只是留下一个 绿色图像你可能会乘R和B 零和G1。红宝石的贵宾使用的阵列中来表示像素的常数,这样你可以写:
out = in * [0, 1, 0]
一个完整的可运行的例子可能是:
#!/usr/bin/ruby
require 'vips'
im = Vips::Image.new_from_file '/home/john/pics/theo.jpg'
im *= [0, 1, 0]
im.write_to_file 'x.jpg'
有一个窍门可以使用 new_from_file
:如果你知道你只会做一些简单的上至下的行动上的图像,像运算或过滤或调整,你可以告诉红宝石的贵宾,你只需要顺序访问的要素:
im = Vips::Image.new_from_file '/home/john/pics/theo.jpg', access: :sequential
现在红宝石的贵宾将流你的形象。它就运行负载时,繁殖和保存所有在平行的,并永远不会保持超过几个扫描线素在内存在任何一个时间。这个可以给出一个非常好的改善速度和存储使用。
改变的图像伽玛你能尝试的东西,如:
im = im ** 0.5 * 255 / 255 ** 0.5
虽然那会是一点点慢(它会打电话给pow()三次为每一像素),它会更快来做一个查询表,运行pow()上,然后地图的图像通过表:
lut = Vips::Image.identity
lut = lut ** 0.5 * 255 /255 ** 0.5
im = im.maplut lut
任何问题,请随时打开他们在rubyvips问题追踪:
其他提示
对不起我不知道红宝石的贵宾,但是 ImageMagick 是一个经典的时候,图像处理。有红宝石绑定的形式 RMagick (目前的仓库),并且可以从中获得很多的功能,从ImageMagick docs,但是还有三个教程 在这里,, 以及很多实例,在网络上。
如果你真的想去深入理论的图像处理,它在其根源的一种形式信号处理(这是完全令人兴奋的和有益的,因为它往往可以应用非常类似的算法在图像上 和 音频/视频信号,但是它最终将得到非常重于数学-傅里叶变换),然后,如果数学不要吓你的,我只能建议阅读的 本书 由冈萨雷斯和树林,我会说它是明确的参考在这一领域。这是昂贵的,但是还有所有你需要在那里得到你开始和好了。 这里的 还有一页的链接,免费书籍,如果你想开始获得不花很多的钱的第一个。