나는 투명도가있는 두 개의 이미지 (둘 다 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"
감사합니다.