required=True, help='Mosaic output image name') args = arg_parser.parse_args() # mosaic creation constructs dimensions = (args.x or args.thumb_size, args.y or args.thumb_size) image_mapper = ImageMapper() mosaic_builder = Mosaic() pixel_analyzer = PixelAnalyzer() image_retriever = ImageRetrievalFactory.construct(args.source_type, dimensions, args.input_file) image_library = ImageLibrary() print("Parsing source image...") mosaic = mosaic_builder.tile(image_mapper.read_pixels(args.input_file), dimensions) if args.source_type == ImageRetrievalFactory.RETRIEVE_LIBRARY: print("Loading image library...") image_retriever.load_library(image_library) print("Generating photomosaic...") for i in range(0, len(mosaic)): for j in range(0, len(mosaic[i])): mosaic[i][j] = image_retriever.get(pixel_analyzer.average( mosaic[i][j])) image_mapper.write_pixels(mosaic_builder.untile(mosaic), args.output_file) print("Photomosaic creation complete!")