为什么 ruby 的大多数图像处理 gem 需要的不仅仅是 gem?
Why do most image processing gems for ruby require more then just a gem?
我是 Ruby 中图像处理的新手,所以我想我会从一些简单的事情开始,调整一堆照片的大小以制作缩略图。我找到了几种可能的解决方案,包括 Rmagick 和 Ruby-vips。我知道还有更多,但我的问题是为什么这些工具需要额外安装才能工作? (RMagick gem 需要 ImageMagick 程序等)
对于您的 RMagick 和 ImageMagick 示例,每个都专注于一个单独的职责。首先,ImageMagick 是一个(庞大的)图像处理功能库。调整大小是一小部分。我假设您已经查过它并看到了它可以做的所有事情。其次,RMagick 是 Ruby 特定的前端,专门为 Ruby 程序员简化 ImageMagick 的使用。其他语言会有其他类似的库。
为什么它们是分开的?图像处理需要大量的专用代码,这些代码需要尽可能高效地处理(速度、内存大小等)。此类库倾向于用 C 或其各种风格编写。虽然安装 ImageMagick 并为其编写自己的 Ruby 前端并不困难,但这并不是大多数人想要做的事情。相反,他们希望其他人已经做到了 (RMagick),而他们只是使用它。
我,因为大多数项目很少使用 ImageMagick,所以我更喜欢为我实际使用的 ImageMagick 命令编写自己的前端,并使用专用于我最常使用的进程的 API。我不建议每个人都这样做,但可以做到。
许多 gem 将专注于一个专注的目标,即解决他们所看到的拼图中缺失的特定部分。如果有人已经编写了经过良好测试的库 X,而其他人编写了 Z,那么如果您需要 Y 以某种方式将它们粘合在一起,您很可能会使用 X,使用 Z,然后只编写 Y 部分。如果您认为 Y 可能对其他人有用,您可以将 Y 发布为 gem.
另一个人来了,想要 Y,发现他也需要 X 和 Z。正常.
当您说 "image resizing" 时,您指的是哪种图像?动图? JPEG? PNG? PDF? BMP?所有这些都是不同种类的图像,需要不同的代码来调整它们的大小。您想使用什么算法来调整大小? ImageMagick 可以使用数十种不同的算法来根据图像的类型调整图像的大小。例如,蓝图与照片非常不同。你想优化什么,速度,图像质量,文件大小?你是让你的图像变大还是变小?这很重要。
你说你想从 "something easy" 开始,但事实并非如此。图像处理是一个非常困难的问题。 ImageMagick 早在 Linux 之前就已经存在(查看)并且真的非常擅长它的功能。是的,它有很多依赖项并且很难安装。图像处理是给成年人的。如果水对你来说太深,不要跳进去。
我是 Ruby 中图像处理的新手,所以我想我会从一些简单的事情开始,调整一堆照片的大小以制作缩略图。我找到了几种可能的解决方案,包括 Rmagick 和 Ruby-vips。我知道还有更多,但我的问题是为什么这些工具需要额外安装才能工作? (RMagick gem 需要 ImageMagick 程序等)
对于您的 RMagick 和 ImageMagick 示例,每个都专注于一个单独的职责。首先,ImageMagick 是一个(庞大的)图像处理功能库。调整大小是一小部分。我假设您已经查过它并看到了它可以做的所有事情。其次,RMagick 是 Ruby 特定的前端,专门为 Ruby 程序员简化 ImageMagick 的使用。其他语言会有其他类似的库。
为什么它们是分开的?图像处理需要大量的专用代码,这些代码需要尽可能高效地处理(速度、内存大小等)。此类库倾向于用 C 或其各种风格编写。虽然安装 ImageMagick 并为其编写自己的 Ruby 前端并不困难,但这并不是大多数人想要做的事情。相反,他们希望其他人已经做到了 (RMagick),而他们只是使用它。
我,因为大多数项目很少使用 ImageMagick,所以我更喜欢为我实际使用的 ImageMagick 命令编写自己的前端,并使用专用于我最常使用的进程的 API。我不建议每个人都这样做,但可以做到。
许多 gem 将专注于一个专注的目标,即解决他们所看到的拼图中缺失的特定部分。如果有人已经编写了经过良好测试的库 X,而其他人编写了 Z,那么如果您需要 Y 以某种方式将它们粘合在一起,您很可能会使用 X,使用 Z,然后只编写 Y 部分。如果您认为 Y 可能对其他人有用,您可以将 Y 发布为 gem.
另一个人来了,想要 Y,发现他也需要 X 和 Z。正常.
当您说 "image resizing" 时,您指的是哪种图像?动图? JPEG? PNG? PDF? BMP?所有这些都是不同种类的图像,需要不同的代码来调整它们的大小。您想使用什么算法来调整大小? ImageMagick 可以使用数十种不同的算法来根据图像的类型调整图像的大小。例如,蓝图与照片非常不同。你想优化什么,速度,图像质量,文件大小?你是让你的图像变大还是变小?这很重要。
你说你想从 "something easy" 开始,但事实并非如此。图像处理是一个非常困难的问题。 ImageMagick 早在 Linux 之前就已经存在(查看)并且真的非常擅长它的功能。是的,它有很多依赖项并且很难安装。图像处理是给成年人的。如果水对你来说太深,不要跳进去。