App::ColorNamer - Hex to color name converter
use App::ColorNamer; my $app = App::ColorNamer->new; my $color = $app->get_name('#aaa') or die $app->error; print "Exact match!\n" if $color->{exact}; printf "Color name: %s\nHEX: #%s\nRGB: %s\nHSL: %s\n", @$color{ qw/name hex/ }, join(', ', @{ $color->{rgb} }{ qw/r g b/ }), join(', ', @{ $color->{hsl} }{ qw/h s l/ });
Output:
Color name: Silver Chalice HEX: #acacac RGB: 172, 172, 172 HSL: 0, 0, 0.674509803921569
This module ports a useful JavaScript creation by Chirag Mehta (http://chir.ag/projects/name-that-color/) that tells you the name of the color based on its hex RGB value.
new
my $app = App::ColorNamer->new;
Returns a freshly baked App::ColorNamer object. Does not take any arguments.
get_name
my $color = $app->get_name('fff', 1); my $color = $app->get_name('#fff'); my $color = $app->get_name('#ffffff', 1); my $color = $app->get_name('98ff98') or die $app->error; $VAR1 = { 'name' => 'Mint Green', 'hex' => '98ff98' 'exact' => 1, 'rgb' => { 'r' => 152, 'b' => 152, 'g' => 255 }, 'hsl' => { 'l' => '0.798039215686275', 'h' => 120, 's' => 1 }, };
Takes one mandatory and one optional arguments. The first one is a mandatory hexadecimal 3 or 6-digit color code. The module strips non-hexadecimal characters, so the code can be prefixed by, say, a hash sign. The second argument can be set to either true or false values. If it is set to a true value, the plugin will only use "sane" colors for matching; see sane_colors() method for more info.
sane_colors()
If an error occurs, returns undef or empty list, depending on the context, and the error message can be obtained via error() method. On success, returns a hashref with the following keys/values:
undef
error()
exact
{ 'exact' => 1, ...
If this key is present, it will be set to a true value, which is an indication that the provided color code matched one of the colors known to the module exactly. If such match did not occur, module will return the closest match; and exact key will be absent.
name
{ 'name' => 'Mint Green', ...
This key will contain the name of the color that is closest to the color you provided. For a full list of colors known to the module, see known_colors() method.
known_colors()
hex
{ 'hex' => '98ff98' ...
This key will contain six hexadecimal digits representing the color that is closest to the one you provided.
rgb
{ 'rgb' => { 'r' => 152, 'b' => 152, 'g' => 255 }, ...
This key will contain a hashref with three values that represent RGB (red, green, and blue) values of the matched color. The keys for those values are r, b and g for red, green and blue values respectively. These values will be decimal.
r
b
g
hsl
{ 'hsl' => { 'l' => '0.798039215686275', 'h' => 120, 's' => 1 }, ...
This key is the same as rgb, except this one specifies the HSL (hue, saturation, lightness) values. The keys for the values are h, s and l for hue, saturation and lightness respectively.
h
s
l
error
my $color = $app->get_name('98ff98') or die $app->error;
If get_name() method fails, the error will be available as a human readable string returned by error() method.
get_name()
known_colors
use Data::Dumper; print Dumper $app->known_colors; $VAR1 = { 'rgb' => { 'r' => 255, 'b' => 240, 'g' => 255 }, 'name' => 'Ivory', 'hsl' => { 'l' => '0.970588235294118', 'h' => 60, 's' => 1 }, 'hex' => 'fffff0' }, { 'rgb' => { 'r' => 255, 'b' => 255, 'g' => 255 }, 'name' => 'White', 'hsl' => { 'l' => 1, 'h' => 0, 's' => 0 }, 'hex' => 'ffffff' } ....
Takes no arguments. Returns an arrayref, each element of which is a hashref that represents one known to the plugin color. The format of the hashrefs are the same as of that returned by get_name() method.
sane_colors
my $current_sane_colors = $app->sane_colors; # adds 'Rose White', 'Baja White', and 'Gin Fizz' to sane colors push @$current_sane_colors, qw/FFF6F5 FFF8D1 FFF9E2/; $app->sane_colors( $current_sane_colors );
Returns an arrayref with 6-digit hex codes of colors that the module accredits with "sanity". This means those are the colors that I could imagine when I read the name (see LIST OF SANE COLORS section below). Can be called with one optional argument, which must be an arrayref. When specified, each element of the arrayref must be a hexadecimal code of one of the colors known to the module (see known_colors() method above); and the new list of colors will be the new "sane colors". In other words, these will be the only colors plugin will consider when second argument to get_name() method is set to a true value.
color
my $last_color = $app->color;
Takes no arguments. Must be called only after a successful call to get_name() (see above). Returns the same thing last successful call to get_name() returned.
This is the list of colors plugin knows to be "sane". The list is rather subjective, and if you feel that some colors need to be added to or removed from this list, feel free to submit a bug.
000000 Black 000080 Navy Blue 0000C8 Dark Blue 0000FF Blue 008080 Teal 00FF00 Green 00FFFF Cyan / Aqua 0C0B1D Ebony 130A06 Asphalt 1560BD Denim 161D10 Hunter Green 240A40 Violet 242E16 Black Olive 251607 Graphite 262335 Steel Gray 30D5C8 Turquoise 315BA1 Azure 370202 Chocolate 3C2005 Dark Ebony 3C4151 Bright Gray 3F2109 Bronze 3F2500 Cola 4169E1 Royal Blue 41AA78 Ocean Green 4F69C6 Indigo 50C878 Emerald 5F5F6E Mid Gray 6456B7 Blue Violet 660099 Purple 661010 Dark Tan 66FF00 Bright Green 6B8E23 Olive Drab 6CDAE7 Turquoise Blue 6E7783 Pale Sky 76D7EA Sky Blue 7A58C1 Fuchsia Blue 808000 Olive 808080 Gray 8B8680 Natural Gray 964B00 Brown 9AC2B8 Shadow Green A8989B Dusty Gray A9A491 Gray Olive A9ACB6 Aluminium ABA0D9 Cold Purple ADDFAD Moss Green ADFF2F Green Yellow B10000 Bright Red B57EDC Lavender B5B35C Olive Green B7410E Rust B87333 Copper BDBBD7 Lavender Gray BFFF00 Lime C0C0C0 Silver C5E17A Yellow Green C62D42 Brick Red C71585 Red Violet CC5500 Burnt Orange D2B48C Tan D7D0FF Fog E0B0FF Mauve E0FFFF Baby Blue F5F5DC Beige F7468A Violet Red FDE910 Lemon FEFCED Orange White FF0000 Red FF00FF Magenta / Fuchsia FF3F34 Red Orange FF681F Orange FF69B4 Hot Pink FFBF00 Amber FFC0CB Pink FFD700 Gold FFD800 School bus Yellow FFE5B4 Peach FFFF00 Yellow FFFFF0 Ivory FFFFFF White
This distribution contains an example script in its examples/ directory.
examples/
Original JavaScript code by Chirag Mehta (http://chir.ag/projects/name-that-color/)
Ported to Perl by Zoffix Znet, <zoffix at cpan.org> (http://zoffix.com/, http://haslayout.net/, http://mind-power-book.com/)
<zoffix at cpan.org>
Please report any bugs or feature requests to bug-app-colornamer at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=App-ColorNamer. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
bug-app-colornamer at rt.cpan.org
You can find documentation for this module with the perldoc command.
perldoc App::ColorNamer
You can also look for information at:
RT: CPAN's request tracker
http://rt.cpan.org/NoAuth/Bugs.html?Dist=App-ColorNamer
AnnoCPAN: Annotated CPAN documentation
http://annocpan.org/dist/App-ColorNamer
CPAN Ratings
http://cpanratings.perl.org/d/App-ColorNamer
Search CPAN
http://search.cpan.org/dist/App-ColorNamer/
Copyright 2010 Zoffix Znet.
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.
To install App::ColorNamer, copy and paste the appropriate command in to your terminal.
cpanm
cpanm App::ColorNamer
CPAN shell
perl -MCPAN -e shell install App::ColorNamer
For more information on module installation, please visit the detailed CPAN module installation guide.