2014-01-21 29 views
0

我在ImageList中有一组图像,我想创建一个160x600的蒙太奇。这里是我到目前为止做:用Rmagick定义蒙太奇的行和列

collage = image_list.montage do |mont| 
    mont.background_color = "#444444" 
    mont.geometry = '160x600' 
end 

我想mont.geometry将设置结果拼贴的宽度/高度,但没有,我认为它实际上是调整每一个被放置在拼贴图像。

如何确保生成的拼贴是160x600,并且形成它的图像的大小是否与此相符?

+0

我不会,如果它会帮助,但我发现这个文档'http:// www.imagemagick.org/RMagick/doc/ilist.html#蒙太奇' – Newben

+0

我已通读。 –

回答

0

mont.geometry命令实际上是将每个小图像放在一起之前。您可以使用image_list.size来确定您有多少图像,然后使用以下类型的命令将各种图像放在一起。

width = 160/image_list.size 
height = 600/image_list.size 

collage = image_list.montage do |mont| 
    mont.geometry = width.to_s + 'x' + height.to_s 
end 

如果你得到小数,事情可能不会奏效。确保你的值平均分配,否则重写代码来有效地处理。

另一种选择是首先创建您喜欢的任意大小的蒙太奇,并在完成后调整大小。他们都需要大致相同的工作量。