Page 1 of 1
					
				[SOLVED] Automatically Remove Background Color
				Posted: 2014-02-10T12:00:36-07:00
				by RyanBram
				Hi.
I want to remove background color from my images. The sample of images is as follow
I tried following command:
Code: Select all
convert Tree.png -fill none -draw "matte 0,0 floodfill" TransparentTree.png
and this is the result that I got.
How to make all of black color become transparent instead of just an area of black.
Regards.
 
			 
			
					
				Re: Automatically Remove Background Color
				Posted: 2014-02-10T13:57:41-07:00
				by snibgo
				Your image has gray pixels around the edge and at 0,0. Perhaps it has been mangled by the image hosting site.
Your second image shows correct working of floodfill. It has stopped at non-black pixels. You could add a black border first, floodfill from 0,0, and finally shave off the border. 
The easier way of making all black pixels transparent is:
Code: Select all
convert -transparent black out.png
 
			 
			
					
				Re: Automatically Remove Background Color
				Posted: 2014-02-10T13:58:18-07:00
				by fmw42
				try
convert Tree.png.jpeg -fuzz 10% -transparent black result.png
This looks for any pixel within 10% of pure black and makes it transparent.
see
http://www.imagemagick.org/Usage/color_basics/#opaque
P.S. In windows syntax you need to use %% rather than %
see
http://www.imagemagick.org/Usage/windows/ 
			 
			
					
				Re: Automatically Remove Background Color
				Posted: 2014-02-10T14:17:03-07:00
				by RyanBram
				snibgo wrote:Your image has gray pixels around the edge and at 0,0. Perhaps it has been mangled by the image hosting site.
Do you mean the thumbnail? I clicked the image to link to actual image and it seems okay.
Even 
I suggested the usage of the hosting for this forum.
Sorry if I cannot give good explanation, but what I want to achieve is for using ImageMagick to remove all background by using top-left pixel as sample. Something like 
convert tree.png -alpha set -transparent #000000 TransparentTree.png
, but using top-left pixel as sample instead of 
#000000.
Because I have a lot of images which have non black background colors. So, whatever it is black, purple, blue, or etc, ImageMagick just look for top-left pixel as sample.
Thanks.
 
			 
			
					
				Re: Automatically Remove Background Color
				Posted: 2014-02-10T15:00:03-07:00
				by snibgo
				"-transparent" needs an actual colour. It would be nice if it accepted syntax like ...
Code: Select all
convert tree.png.jpg -transparent "%%[pixel:{0,0}]" t.png
... but it doesn't. So you have to extract the colour with a separate command. This depends on your scripting language. For example, in Windows BAT:
Code: Select all
FOR /F "usebackq" %%C ^
IN (`convert tree.png -format "%%[pixel:p{0,0}]" info:`) ^
DO convert tree.png -transparent %%C out.png
 
			 
			
					
				Re: Automatically Remove Background Color
				Posted: 2014-02-11T01:36:01-07:00
				by RyanBram
				snibgo wrote:"-transparent" needs an actual colour. It would be nice if it accepted syntax like ...
I am very agree to you. Is it possible for me to suggest such feature to ImageMagick Developers? How could I do that?
 
			 
			
					
				Re: Automatically Remove Background Color
				Posted: 2014-02-11T05:58:46-07:00
				by snibgo
				You can write a post in the developers forum: 
viewforum.php?f=2 
			 
			
					
				Re: Automatically Remove Background Color
				Posted: 2014-02-11T15:44:46-07:00
				by fmw42
				I believe that this is what you want to do using replace rather than floodfill:
convert Tree.png.jpeg -fuzz 10% -fill none -draw "matte 0,0 replace" result.png
see section on matte x,y method
http://www.imagemagick.org/script/magic ... aphics.php
In Windows syntax, you may need to use %% rather than %.
 
			 
			
					
				Re: Automatically Remove Background Color
				Posted: 2014-02-12T08:10:59-07:00
				by RyanBram
				snibgo wrote:
Code: Select all
FOR /F "usebackq" %%C ^
IN (`convert tree.png -format "%%[pixel:p{0,0}]" info:`) ^
DO convert tree.png -transparent %%C out.png
 
 
fmw42 wrote:
Code: Select all
convert Tree.png.jpeg -fuzz 10% -fill none -draw "matte 0,0 replace" result.png
 
 
Result:
Both worked. Thanks for all.