RMagick Masking - 不同的背景不同结果

时间:2016-01-30 14:31:26

标签: ruby imagemagick rmagick image-masking

我有2件T恤图片,颜色是黑色和粉红色。我想把它与android徽标混合。在黑色T恤上结果很棒。但在粉红色的那个,android图像是明亮的。

这是我的代码

    tshirt = Magick::Image.read("/Volumes/Work/rmagick/cacat.png").first

    canvas = Magick::Image.new(tshirt.rows, tshirt.columns) do |c|
        c.background_color = "none"
    end

    img = Magick::Image.read("/Volumes/Work/rmagick/android_logo2.png").first
    img = img.resize_to_fit(250)

    # # contour
    contour = img.composite!(canvas, Magick::CenterGravity, Magick::InCompositeOp)
    img = Magick::Image.read("/Volumes/Work/rmagick/android_logo2.png").first
    img = img.resize_to_fit(250)

    contour = contour.composite!(img, Magick::CenterGravity, Magick::AddCompositeOp)

    tshirt = tshirt.composite!(contour, 295,250, Magick::PlusCompositeOp)

    tshirt.write('/Volumes/Work/jadi.png')

以及结果

black

pink

所以我怎样才能使android图像就像它在黑色T恤上一样。我应该改变哪些代码?

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式获取混合模式列表:

identify -list compose

所以,你可以这样做,看看哪一个适合你的需要:

#!/bin/bash
for blend in $(identify -list compose|grep -v Blur ); do 
  convert -gravity center -label "$blend" tshirt.png android.png -compose $blend -composite miff:-
done | montage - -tile 5x result.png

enter image description here