RMagick remove white background from image and make it transparent

前端 未结 3 1237
北恋
北恋 2020-12-15 09:55

I need to remove the white background from this image and make the background transparent. So it\'s just a black tick on the transparent background exported as a png.

<
3条回答
  •  粉色の甜心
    2020-12-15 10:39

    I know I am pretty late to the party, but a lot has changed since this question was first posted, so here is how you can do it today using at least version 2.15.4 of rmagick

    Assuming you have the image somewhere accessible:

    image = Magick::Image.new(path_to_file)
    image.background_color = 'none'
    

    If you also want to trim the image so it's only as big as it boundaries, simply use .trim!

    image.trim!
    

    EDIT:

    Turns out the solution above does not really work for all use cases. A more general solution is this:

    # the image needs to be in 'PNG' format
    image.format = 'PNG'
    
    # set a fuzz on the image depending on how accurate you want to be
    image.fuzz = '10%'
    
    # get the image background color
    background_color = image.background_color
    
    # convert pixels based on their color to being transparent
    # the fuzz set above controls how accurate the conversion will be
    image.paint_transparent(background_color)
    

提交回复
热议问题