I tried this one out. I'm not sure if I was successful or not... My first instinct was to rank characters for intensity levels programmaticly. I then came to the realization that not all characters have the same distribution of intensity, so I thought I would try splitting them up, and matching them with sets of pixel intensities (instead of just one). ruby create_tables.rb num [extended] does the first part - pass it a number (number of pixels sqare that will be replaced by one character). uses extended ASCII if the second argument is applied. ruby i2a.rb src_img outfile num [normalized] does the second part. takes num x num clumps of pixels from src_image and finds the closest character from the appropriate table (by Euclidean distance), puts it out to outfile. If normalized is supplied, the image is normalized for maximum contrast in the source image. You can find the code here: http://www.rabble-rooster.org/rubyquiz/50/ Results are in the results folder. The underscore also rendered to pure white, so I had to remove it manully from the YAML tables. Those tables are available also. I know this code needs some refactoring/reengineering, and I didn't take the time to look into how *Magick did things like scaling. Feel free to chide me on any points that are inefficient/bad/wrong/stupid. -- Rob