How do I get the RGB values of the average color of an image, where each value is 0-255? Such as "255,255,255"
I run this command to shrink the image down and it returns the 'rgba' value with the alpha channel and sometimes it gives text color names:
convert cat.png -resize 1x1\! -format "%[pixel:u]\n" info:
Output:
rgba(155,51,127,0.266087)
There are two aspects to my answer:
convert
sees it..txt
format supported by convert
. This text format enumerates all pixels of an image, giving first its coordinates ($row,$column:
), then its RGB or CMYK values in different formats.Here is a command which covers both aspects in one:
convert cat.png -resize 1x1 out.txt
cat out.txt
To get the output directly in the terminal window, you could use:
convert cat.png -resize 1x1 txt:-
Example output:
convert p4.png -resize 1x1 txt:-
# ImageMagick pixel enumeration: 1,1,255,srgb
0,0: (189,185,184) #BDB9B8 srgb(189,185,184)
You can do the following to parse out just the comma-separated RGB values. It also will not return text color names.
convert cat.png -resize 1x1\! \
-format "%[fx:int(255*r+.5)],%[fx:int(255*g+.5)],%[fx:int(255*b+.5)]" info:-
Output format should look like:
155,51,127
This should work in ImageMagick 6.3.9.1+
The C# way, using the NuGet Magick.Net package(s) and borrowing from the command line examples.
ImageMagick.IMagickColor<ushort> color;
using (ImageMagick.MagickImage image = new ImageMagick.MagickImage(file))
{
// Get average color
image.Resize(1, 1);
color = image.GetPixels().First().ToColor();
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With