我完全新的对图像的处理。我什么都不知道关于什么是JPEG内部以及它是如何工作的。

我不知道,如果我可以找个地方一块红宝石码执行下列操作简单:

  1. 开jpeg文件。
  2. 迭代过每一像素,并设定它的颜色以外汇绿色的。
  3. 写信的结果对另一个文件。

我特别感兴趣的是如何这可通过使用红宝石的贵宾图书馆
https://github.com/ender672/ruby-vips

我的目标-学习如何执行的基本图像处理操作使用红宝石的贵宾(gamma修正,亮,色彩,...)

任何链接的工作实例更为复杂的'hello world'-像一个在红宝石的重要人物的审查页会将非常感谢!

如果有替代品,红宝石的贵宾,我会很感激他们。


更新

发生了许多事情,因为我问这个问题:

有帮助吗?

解决方案

更新 红宝石的贵宾已经改变了一点,因为这个答案编写的。我已经修订了它当前(在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问题追踪:

https://github.com/jcupitt/ruby-vips/issues

其他提示

对不起我不知道红宝石的贵宾,但是 ImageMagick 是一个经典的时候,图像处理。有红宝石绑定的形式 RMagick (目前的仓库),并且可以从中获得很多的功能,从ImageMagick docs,但是还有三个教程 在这里,, 以及很多实例,在网络上。

如果你真的想去深入理论的图像处理,它在其根源的一种形式信号处理(这是完全令人兴奋的和有益的,因为它往往可以应用非常类似的算法在图像上 音频/视频信号,但是它最终将得到非常重于数学-傅里叶变换),然后,如果数学不要吓你的,我只能建议阅读的 本书 由冈萨雷斯和树林,我会说它是明确的参考在这一领域。这是昂贵的,但是还有所有你需要在那里得到你开始和好了。 这里的 还有一页的链接,免费书籍,如果你想开始获得不花很多的钱的第一个。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top