2016-01-30 2 views
1

У меня есть 2 футболки с изображениями, цвет черный и розовый. Я хочу смешать его с логотипом Android. на черной футболке результат был отличный. но на розовом, изображение андроида должно быть ярким.RMagick Masking - на другом фоне другой результат

вот мой код

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

так, как я могу сделать андроида изображение походит, когда его на черной футболке. какой из моего кода я должен изменить?

+0

Я DON» Говорите с Ruby, но попробуйте изменить «Magick :: PlusCompositeOp» для чего-то другого - возможно, что-то с надписью «Overlay» или «Blend» в его имени. –

+0

его хорошо, если у вас есть только команды imagemagick. – geralvin

ответ

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

Смежные вопросы