Mosaic builder for building photomosaic-style mosaics intended for use with pen plotters.
Currently works with images from the Quick Draw dataset at https://quickdraw.withgoogle.com/data
This code is derived from code used to make raster photomosaics originally written for the book Flickr Hacks. I've added additional scripts to produce raster thumbnail previews of what the various doodles look like when drawn in black or white ink. These thumbnails are used by the build_mosaic script to construct a raster photomosaic in the usual way (by selecting thumbnails that match the desired target picture). Once the appropriate doodles are selected, information about the tileset is output to a JSON file and a JPG preview is made from the thumbnails. The saved JSON data can then be used, in conjunction with the original binary files from Quick Draw, to produce an SVG which can be plotted.
Required software packages:
PIL/Pillow 2.0+ (https://pypi.org/project/Pillow/) svgwrite 1.0+ (https://pypi.org/project/svgwrite/) gsutil (see https://cloud.google.com/storage/docs/gsutil_install)
make_sample.sh # make a sample mosaic from scratch (illustrates use of the following scripts) get_bins.py # download a collection of bin files from quickdraw make_thumbs.py # produce raster thumbnail images for an image set mix_thumbs.py # mix thumb lists into compound lists for mosaics with multiple symbols build_mosaic.py # photomosaic builder - reads thumbnails and outputs a JPG preview and JSON layout. render_mosaic_svg.py # render mosaic data from a json layout file to an SVG imageset.py # code used by build_mosaic mosaick.py # code used by build_mosaic mosaic_constants.py # code used by build_mosaic
thumbs\ # thumbnails and image lists are stored here by make_thumbs bdata\ # binary files are placed here by get_desired_bins.py jdata\ # json tile layouts are placed here by build_mosaic renders\ # preview images are placed here by build_mosaic samples\ # some sample output targets\ # target photos