2014-11-03 4 views
0

나는 투명도가있는 두 개의 이미지 (둘 다 png)를 가지고 있습니다. MiniMagick gem을 사용하여 단일 이미지의 두 사본을 두 개의 다른 이미지로 자릅니다. 그런 다음이 이미지 중 하나를 다른 이미지 위에 겹쳐서 투명도를 전체적으로 낮추고 자합니다.ImageMagick의 합성물을 사용하여 투명도를 유지할 수 없습니다.

다음 코드를 사용하면 image2의 투명도를 고려하지만 일단 image1의 맨 위에 놓으면 image1의 투명도가 검은 색으로 변경됩니다. 나는 투명도를 유지할 필요가 있지만 알파 투명도를 올바르게 사용하는 방법을 알지 못합니다. 적절한 도구 일지라도.

image = MiniMagick::Image.open("skin.png") 
image1 = MiniMagick::Image.open(image.path) 
image2 = MiniMagick::Image.open(image.path) 

# Crop and scale image1 
MiniMagick::Tool::Mogrify.new do |m| 
    m.crop '8x8+8+8' 
    m.scale '144x144' 
    m.background 'transparent' 
    m.extent '160x160-8-8' 
    m << image1.path 
end 

# Crop and scale image2 
MiniMagick::Tool::Mogrify.new do |m| 
    m.crop '8x8+40+8' 
    m.scale '160x160' 
    m << image2.path 
end 

result = image1.composite(image2) do |c| 
    c.compose 'Over' 
    c.alpha 'On' 
end 

result.write "public/skins/#{profile}.png" 

send_file "public/skins/#{profile}.png" 

감사합니다.

답변