Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby RMagick掩蔽-不同背景不同结果_Ruby_Imagemagick_Rmagick_Image Masking - Fatal编程技术网

Ruby RMagick掩蔽-不同背景不同结果

Ruby RMagick掩蔽-不同背景不同结果,ruby,imagemagick,rmagick,image-masking,Ruby,Imagemagick,Rmagick,Image Masking,我有两张t恤图片,颜色是黑色和粉色。我想把它和安卓标志融合在一起。在黑色t恤上,效果非常好。但在粉红色的那一款上,安卓的图像太亮了 这是我的密码 tshirt = Magick::Image.read("/Volumes/Work/rmagick/cacat.png").first canvas = Magick::Image.new(tshirt.rows, tshirt.columns) do |c| c.background_color = "none"

我有两张t恤图片,颜色是黑色和粉色。我想把它和安卓标志融合在一起。在黑色t恤上,效果非常好。但在粉红色的那一款上,安卓的图像太亮了

这是我的密码

    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')
结果如下


那么,我怎样才能让安卓形象像穿在黑色t恤上一样呢。我应该更改哪种代码?

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

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

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

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

我不会说Ruby,但尝试将
Magick::PlusCompositeOp
更改为其他内容-可能是名称中带有
Overlay
Blend
的内容。如果您只有imagemagick命令就可以了。我不会说Ruby,但是,尝试将
Magick::PlusCompositeOp
更改为其他内容-可能是名称中带有
Overlay
Blend
的内容。如果您只有imagemagick命令,则可以。