Test Pattern Image Generator

This is a simple Test Pattern Image Generator that I (Andy Gaskell) did. I take a set of parameters and generates a canvas and a tiff and bitmap. We were doing hardware debug on a DVI product and needed a wide variety of test images with various hues and colours, so I wrote this script to generate the test image files. I creates three columns, Red, Green and Blue with the tint changing from top (darkest) to bottom (lightest).

The whole code is just pasted in below, it's got a fair few comments in, but any bits that don't make sense, just add a question.

 # Simple script to create test images
 # andy gaskell 11/07/2006
 # test_image_creator.tcl
 
 #load image package
 package require Img
 
 # user configurable vars
 set topcolor 127                ;# top value of colors to go up to (max 256)
 set incrcolor 4                 ;# how many color numbers will each band vary from the previous one
 set spreaddif 18                ;# heigth of the stripes of color
 set outputfilename "test_image" ;# output file name
 
 # util vars
 set count 0
 set spreadcount 1
 
 # GUI setup
 wm title . "Test Image Creator" 
 wm minsize . 800 600
 wm maxsize . 800 600
 frame .w
 canvas .w.image -width 800 -height 600 -background black
 pack .w.image
 pack .w
 .w.image create rect 0 0 800 600 -fill black
 
 # loop making the image
 while { $count < $topcolor } {
 
     # setup the x and y vals for the top left and bottom right corners
     set col1x1 1
     set col1x2 266
     set col1y1 $spreadcount
     set col1y2 [ expr $spreadcount + $spreaddif ]
     set col2x1 267
     set col2x2 532
     set col2y1 $spreadcount
     set col2y2 [ expr $spreadcount + $spreaddif ]
     set col3x1 533
     set col3x2 798
     set col3y1 $spreadcount
     set col3y2 [ expr $spreadcount + $spreaddif ]
      
     # set the colors
     set redvar [format "#%.2X%.2X%.2X" $count 0 0]
     set greenvar [format "#%.2X%.2X%.2X" 0 $count 0]
     set bluevar [format "#%.2X%.2X%.2X" 0 0 $count]
 
     # create the colored boxes
     .w.image create rect $col1x1 $col1y1 $col1x2 $col1y2 -fill $redvar
     .w.image create rect $col2x1 $col2y1 $col2x2 $col2y2 -fill $greenvar
     .w.image create rect $col3x1 $col3y1 $col3x2 $col3y2 -fill $bluevar
 
     # add text to the canvas
     .w.image create text [ expr $col1x1 + 140 ] [ expr $col1y1 + [ expr $spreaddif / 2 ] ] -text "line: [ expr $count / $incrcolor ], colour:  $redvar" -justify left -fill white -font -adobe-helvetica-medium-r-normal-*-10-80-100-100-p-56-iso8859-1
     .w.image create text [ expr $col2x1 + 140 ] [ expr $col2y1 + [ expr $spreaddif / 2 ] ] -text "line: [ expr $count / $incrcolor ], colour:  $greenvar" -justify left -fill white -font -adobe-helvetica-medium-r-normal-*-10-80-100-100-p-56-iso8859-1
     .w.image create text [ expr $col3x1 + 140 ] [ expr $col3y1 + [ expr $spreaddif / 2 ] ] -text "line: [ expr $count / $incrcolor ], colour:  $bluevar" -justify left -fill white -font -adobe-helvetica-medium-r-normal-*-10-80-100-100-p-56-iso8859-1
 
     # increment the counts
     set count [ expr $count + $incrcolor ]
     set spreadcount [ expr $spreadcount + $spreaddif ]
 }
 
 # make sure the GUI updates
 update
 
 # grab the contents of the canvas canvas into photo image testimage.
 set testimage [ image create photo -format window -data .w.image ]
 
 # write the file(s)
 $testimage write -format bmp $outputfilename.bmp
 $testimage write -format tiff $outputfilename.tif
 
 # pop a box
 tk_messageBox -message " Done \n $outputfilename created \n " -type ok -title "Done" -icon info

uniquename 2014jan27

For those who do not have the facilities or time to implement the code above, here is an image of the 'color swatches' that the code creates --- so you can quickly see whether this is a utility that you want to put in your arsenal of color utilities.

reds-greens-blues_colorSwatchesCreator_wiki17178_804x622.jpg

OR, simply save this image for future reference. (Note the these columns do not go all the way to 'FF' in each color. You may want to change the script somewhat to generate a range --- and color-spacing --- that you find more useful.)