Ruby:如何在没有Imagemagick的情况下将图像叠加在另一个上面?

时间:2012-01-13 04:46:35

标签: ruby image-science

我的图像是100 X 100,并希望将其置于200 x 200的空白图像中。

我如何使用ImageScience和Ruby或其他第三方软件包?没有ImageMagick也没有FreeImage?我知道这非常有限,但是这两个对我来说相当蹩脚,因为两者都无法在我的本地Mac和我的EngineYard Amazon实例上运行。我可以在Mac上使用FreeType和Ruby,但无法在Amazon云上部署。我不能在我的Mac上安装RMagick,但它可以安装在我的Amazon云上。

顺便说一下,我觉得应该在每台Linux和Mac机器上自动安装ImageMagick。会省一些人很多麻烦。如此微不足道的痛苦。

2 个答案:

答案 0 :(得分:6)

最好的方法是使用纯红宝石库,例如来自Seattle.rb的http://docs.seattlerb.org/png/https://github.com/wvanbergen/chunky_png

很容易理解。你应该创建一个白色的200x200画布并将图像加载到它上面,或者如果你发现它更容易,使用alpha混合构图。

(来自chucky的例子):

# Compose images using alpha blending.
avatar = ChunkyPNG::Image.from_file('avatar.png')
badge  = ChunkyPNG::Image.from_file('no_ie_badge.png')
avatar.compose!(badge, 10, 10)
avatar.save('composited.png', :fast_rgba) # Force the fast saving routine.

如果你真的不需要一个新的图像,它只用于显示pourposes,使用css和/或javascript会更容易。

答案 1 :(得分:0)

可能会回答这个问题,但您是否尝试通过Homebrew在Mac上安装ImageMagick?这就像安装Homebrew并输入一个命令一样简单:

brew install imagemagick

这应该没有任何问题。 Homebrew就像默认情况下应该包含在Mac OS X中的软件包管理器。我也用它来安装默认情况下不包含的其他软件包,比如Git,Ack,Graphviz,......