我正在使用 ImageMagick 命令进行图像处理,我想将它们移植到 RMagick。此任务的目标是为了隐私目的拍照并对给定区域(一个或多个)进行像素化。
这是我的 bash 脚本 ( ),使用以下命令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
现在我想使用 ImageMagick 创建这个脚本的 Ruby 版本。这是我现在拥有的:
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
如您所见,我被困在最后一步。为了得到这个结果,我需要对我的原始图片、像素化图片和蒙版进行什么操作?
如何仅通过蒙版的白色部分和像素化图片的重叠来构建图像。就像这个一样,但透明而不是黑色?