Я занимаюсь обработкой изображений с помощью команд ImageMagick, и я хотел бы поместить их в RMagick. Цель этой задачи - сделать снимок и пиксельные области (один или несколько) для целей конфиденциальности.Port ImageMagick команды для RMagick
Вот мой Баш скрипт (script.sh
), который работает очень хорошо с помощью команды convert
:
convert invoice.png -scale 10% -scale 1000% pixelated.png
convert invoice.png -gamma 0 -fill white -draw "rectangle 35, 110, 215, 250" mask.png
convert invoice.png pixelated.png mask.png -composite result.png
Теперь я хочу, чтобы создать версию Ruby, этот сценарий с помощью ImageMagick. Вот что у меня есть сейчас:
require 'rmagick'
# pixelate_areas('invoice.png', [ [ x1, y1, width, height ] ])
def pixelate_areas(image_path, areas)
image = Magick::Image::read(image_path).first
pixelated = image.scale(0.1).scale(10)
mask = Magick::Image.new(image.columns, image.rows) { self.background_color = '#000' }
areas.each do |coordinates|
area = Magick::Image.new(coordinates[2], coordinates[3]) { self.background_color = '#fff' }
mask.composite!(area, coordinates[0], coordinates[1], Magick::OverCompositeOp)
end
# Now, how can I merge my 3 images?
# I need to extract the part of pixelated that overlap with the white part of the mask (everything else must be transparent).
# Then I have to superpose the resulting image to the original (it's the easy part).
end
Как вы можете видеть, я застрял на последнем шаге. Какую операцию нужно делать с my original picture, my pixelated picture и my mask для того, чтобы иметь this result?
Как создать изображение только с перекрытием белой части маски и пиксельной картинки. Точно так же, как this one, но с прозрачностью вместо черного?
Журнал ошибок или еще что-то еще? – kiddorails
Ошибка отсутствует. Я просто не знаю, что делать с моим оригинальным изображением, пиксельной версией изображения и маской. Я добавил изображения к сообщению. –