< A picture with all 16.7M colors >

Creation of a picture with all 16,777,216 colors

Almost every graphic editing software offers an option to count the number of used colors in a picture. But even high-quality photos don't have more than about 200,000 different colors. What a waste! ;-)
The RGB-model has 16.7 million colors. They originate from 256 red x 256 blue x 256 green (0 to 255). That's 2 high 24 bit (2^24 bit).
My intention was to create a picture with all 16.7 million colors.

Project

I'm working with Perl and Image::Magick.
First try was to create a picture of 256x65536 pix size. Unfortunately no software was able to read this file. So the easiest way was to create a square of 4096x4096 pix.

# PERLSCRIPT FOR A PICTURE WITH 16,777,216 COLORS -> www.medienvilla.com

#!usr/bin/perl

# TRANSLATIONS for the variables :
# @hexwert : @hexvalue
# $zaehler : $counter
# $spalte : $row 
# $zeile : $line
# $rot : $red
# $gruen : $green
# $blau : $blue
# $farbe : $color

 use Image::Magick;

 push(@hexwert, '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c', '0d', '0e', '0f', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2a', '2b', '2c', '2d', '2e', '2f', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d', '3e', '3f', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4a', '4b', '4c', '4d', '4e', '4f', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5a', '5b', '5c', '5d', '5e', '5f', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6a', '6b', '6c', '6d', '6e', '6f', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7a', '7b', '7c', '7d', '7e', '7f', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8a', '8b', '8c', '8d', '8e', '8f', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9a', '9b', '9c', '9d', '9e', '9f', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'aa', 'ab', 'ac', 'ad', 'ae', 'af', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'ba', 'bb', 'bc', 'bd', 'be', 'bf', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'ca', 'cb', 'cc', 'cd', 'ce', 'cf', 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'da', 'db', 'dc', 'dd', 'de', 'df', 'e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ed', 'ee', 'ef', 'f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'fa', 'fb', 'fc', 'fd', 'fe', 'ff');

 $zaehler = 0;
 $spalte = 0;
 $zeile = 0;

 # BACKUP
 $backup = 16;
 $backupintervall = 16;

 $image = Image::Magick->new;

 $image->Set(size=>'4096x4096');
 $image->ReadImage('xc:white');

 print "\n image loaded ... \n\n";

 for ($i = 0; $i <= 255; $i++)
  {
   $rot = $hexwert[$i];

   for ($j = 0; $j <= 255; $j++)
    {
     $gruen = $hexwert[$j];

     for ($k = 0; $k <= 255; $k++)
      {
       $blau = $hexwert[$k];

	$zaehler = $zaehler + 1;

	# STARTING THE GAME
	    if ($spalte == 4096)
 		 { 
		  $spalte = 0;		# BACK TO THE 1st ROW (0)
		  $zeile = $zeile + 1;	# ONE LINE DOWN 
		  print " line $zeile / 4095 \t No. $zaehler / 16777216 \t $farbe = $i $j $k \n";

		 if ($zeile == $backup)
		  {
		   print " writing backup for line No. $backup ... \n";

		   $image->Write('image_16m_bkp_'.$backup.'.tif');

   		   $oldbackup = $backup - $backupintervall;
		   print " deleting old backup : $oldbackup ... \n";
		   unlink('image_16m_bkp_'.$oldbackup.'.tif');

		   # EMPTY MEMORY
		   undef $image;

		   $image = Image::Magick->new;
		   $image->Set(size=>'4096x4096');
		   $image->ReadImage('image_16m_bkp_'.$backup.'.tif');

		   print " image loaded ... \n";

		   $backup = $backup + $backupintervall;
		  }

		 }

	$farbe = "#".$rot.$gruen.$blau;

	$image->Draw(primitive=>'point', fill=>"$farbe", points=>"$spalte,$zeile");

	$spalte = $spalte + 1;

      } # END OF 3rd -FOR

    } # END OF 2nd -FOR

  } # END OF 1st -FOR

 $image->Write('image_16m.tif');

 print " \n line $zeile / 4095 \t No. $zaehler / 16777216 \t $farbe = $i $j $k \n";
 print " ASCII-Code Nummer &#0007; "; 	# SOUNDAUSGABE - COOL !
 print " \n ********************************************** ready ! \n";

# PERLSCRIPT FOR A PICTURE WITH 16,777,216 COLORS -> www.medienvilla.com

Result

The result is a square with all RGB-colors.

16.7 million colors in one picture (reduced)

OK. that's not very fluent. So some cells (256x16 pix) had to be deplaced while some remained on their spot. The result is more fluent than before.

16.7 million colors in one picture (reduced)

Finally - and after long tries and calculations - the square became a stripe of 1024x16384 px.

Download and further information

You can download the script for the square and the stripe. If you want to see more of these pictures, you can find some interesting pictures at www.allrgb.com.


Related topics: Html/Css color codes Downloads PC Shutdown PW-Finder

Rate page:  
  448930411898.17/5 Points (54 Ratings)
448930411898.17/5 54