It's a little bit eerie when an automatically generated photomosaic comes out exactly the way you want it to; you get the uncanny sense of some hidden human intelligence guiding the process. It's not only that AndreaMosaic places tiles so that the average color in the tile corresponds to the average color in that region of the larger image; the program does better than that. If there is, say, a diagonal border between a light and dark region in the larger image, AndreaMosaic will actually pick out tiles that have light and dark region separated by a diagonal border at the same angle, and line them up in such a way to create the smooth diagonal in the larger picture. Even if you know it's not that hard for a software program to figure out how to do this, it's still a bit surreal the first time you see it done in a way that makes a recognizable face emerge from a collage of other familiar photographs.
While the use of the software is pretty straightforward, I got best results by using some particular tricks and changing some settings from their defaults. If you follow the steps below, the whole process should take less than an hour.
1. Download photos to use as "tiles", using PhotoGrabber.
I'm assuming, just as an example, that you want to create a photomosaic of a picture showing an adult couple together, using photos of their kids. (This has the added convenience that if their kids are on Facebook, they probably have a lot more pictures of themselves online than their parents do, and you need a lot of photos to use as "tiles" to create a good photomosaic.)
PhotoGrabber is a free program that you can use to download all photos from the account of one of your Facebook friends. (I myself avoid Facebook, but for the purpose of this gift I held my nose and created a temporary account, then deep-sixed it once I had the photos I needed.) I selected the option to download "All tagged photos", since I wanted to use pictures of the kids, not photos that they'd taken, although you could go either way as a matter of preference. Giving someone a photomosaic of themselves made up of photos that they've taken (but which they're not necessarily in), would be a neat idea.
On a broadband connection, PhotoGrabber can download hundreds of photos from a user's Facebook account in a few minutes.
If you like it, donate to support PhotoGrabber as well.
2. Copy all of the downloaded photos into a single folder, and remove duplicates.
When PhotoGrabber downloads photos from a user's Facebook account, it organizes them into folders named after the users' Facebook photo albums. But for the purpose of managing images to be used as tiles, it's much easier if they are all organized into one folder with no subfolders.
So, select the folder into which PhotoGrabber has just downloaded the photos that you will be using, and do a search for all files matching "*.*" in that folder, to create a list of all the images in the search results pane. Then select all of the images in the search results, right-click to "Copy", and then create a new folder somewhere and paste all of the images into that new folder.
This also has the effect of removing duplicate images that PhotoGrabber may have downloaded more than once. If you're downloading tagged photos from multiple Facebook users' accounts, then any photo in which both users are tagged, will be downloaded twice. This can be a problem when you create the photomosaic later, because even though AndreaMosaic attempts to avoid putting "duplicate" tiles too close together, if you have multiple copies of the same image file, AndreaMosaic will consider those to be two different images, and may position them awkwardly next to each other in the resulting mosaic. Fortunately, if PhotoGrabber downloads the same image from Facebook twice, both instances of the image will have the same name -- so when you copy and paste them all into the same folder, Windows will say, "There is already a file in this folder with the same name; do you want to replace it?", thus allowing you to eliminate duplicates.
3. Remove "near-duplicates" and unwanted photos from the folder.
Once you have all the needed images in a single folder, you can scroll through and eliminate the ones you don't want to use. I got rid of anything that didn't actually show the people whose pictures I was trying to use, even if they had been tagged in the photos. (For example, photos showing a collection of cartoon animals where users tag them with the names of friends that each animal remind them of -- that sort of thing shows up on Facebook a lot, but I didn't want to use those as tiles.) I also got rid of any "collage" photos, since those look awkward when they are shrunk down and used as tiles in a larger photomosaic.
You can also remove "near-duplicate" images in this step. If there are several pictures that are very similar, AndreaMosaic will still treat them as "different" images, and may place them awkwardly close together in the final photomosaic. To avoid this, you can set aside any photos that appear to look almost the same as other photos in the collection.
I took the unused photos and moved them to another folder. (AndreaMosaic does provide the option to create an "exclude list" of images not to be used when creating a photomosaic later on, but it's simpler just to move them out of the folder at this stage and forget about them.)
You do not need to catch every inappropriate or near-duplicate image in this step. After you create the photomosaic, you'll probably notice some duplicates or weird-looking images that jump out at you, so you can return to this step at that point.
4. Launch AndreaMosaic and configure the settings.
Here are the steps that worked for me:
(a) Before the main AndreaMosaic interface opens, the program will prompt you to choose between "Square Tiles (1:1)", "Rectangle Tiles (4:3)", "DSLR Tiles (3:2)", etc. I picked Square Tiles. Then the main AndreaMosaic interface appears.
(b) For "Mosaic Size", pick the larger of the two dimensions of the frame that you want to use for the final photomosaic, or just below that amount if you want a white border around the mosaic when it's printed. (For example, I was making a photomosaic to fit a 24"x36" frame, so I entered 35 inches for "Mosaic Size".)
(c) For "Tile Size", to make my 24"x36" photomosaic I chose 37 tiles per row. This is a trade-off; the smaller the tiles, the more closely the photomosaic will resemble the original larger picture, but the harder it will be to see the pictures inside the tiles. At 24"x36", each tile ended up being about 0.65 inches square, which is large enough to see most of the tile contents clearly if the mosaic is printed on a good printer. I also experimented with 20 tiles per row, since the larger tile size much easier to see the kids' pictures in the individual tiles -- but with fewer tiles per row, I also lost the effect of being able to see the Mom's and Dad's faces emerge like magic when you backed away from the picture, and I didn't want to give that up, so I went with 37 tiles per row after all.
(d) For "Mosaic Resolution", leave set to 300 ppi, which translates to photo-quality resolution when printed.
(e) For the "Use same tile up to:" option, I switched from "unlimited times" to "10 times". I did this after a first attempt to create a photomosaic of my friend's wedding picture, in which most of her white wedding dress ended up being tiled by the same small numbers of pictures of one of her kids standing in the white sands of the New Mexico desert. The final result looks more interesting if you don't have too much duplication.
(f) I set "Duplicate spacing" to "10 tiles minimum", also to avoid having duplicates appear too close together.
(g) Under "Tile variants", I checked only "Original Tile" and "Mirror", and unchecked "Rotated 90 degrees", "Rotated 180 degrees" and "Flip Vertically". I thought the rotated and upside-down tiles just looked weird, and I was able to get a mosaic that looked just as good even while leaving the tiles right-side-up.
5. Specify your target image and tile images.
(a) Under "Main Image to reproduce as a Mosaic", click the green "Plus" button and pick the image you want to reproduce.
(b) To the right, click the "Tile Images" button (in this version of AndreaMosaic it's a picture of a dolphin) to open the "Tile Images" window.
(c) With the "Folder Type:" dropdown set to "Include Images/Folders" (this should be the default), click the "Add Folder" button at the bottom, and specify the folder that you created in step 3 containing the tile images.
(d) If there are any images that you want to ensure are included in the photomosaic, change "Folder Type:" to "Required Images/Folders", then click the "Add Image" button and specify the image you want to require.
(e) Click "Save List" to save the list you just created. AndreaMosaic will spend a few moments processing the images in the list, and then prompt you to save the list as a file with the .am4 extension.
(f) Click the "OK" button to close the "Tile Images" window.
6. Create the PhotoMosaic.
In the main AndreaMosaic interface screen, click the "Create PhotoMosaic" button (in this version of AndreaMosaic it's a Van Gogh painting to the right of the dolphin). AndreaMosaic will chug away for a few moments, and then your image file will be created.
At this point, when you open the target photomosaic you may notice some things you want to correct. Sometimes too-similar tiles will appear close to each other; this may be caused by having some "near-duplicates" that you missed in step #3. Or there may be certain tiles that appear jarring, like an extreme close-up selfie with a bright camera flash, which calls attention to itself in multiple places and distracts from the overall picture.
Unfortunately, once you spot any tiles that caused problems, you cannot automatically identify the picture file that was the source of that tile. You have to go back to the folder that you created in step 2, and scroll through the list of pictures looking for the culprits. Once you find them, you can move them into the directory where you're setting aside photos not to be used as tiles.
Note that any time you move photos out of that directory, before you create the next iteration of the photomosaic, you have to go back to step 5 and re-create the tile-image-list .am4 file from that directory. That's because AndreaMosaic's .am4 image list file stores a list of files, not directories, and if you remove a file from the directory, the .am4 list file will still be stuck with an outdated reference to an image file that's no longer there.
7. Repeat steps 3, 5, and 6 until you're satisfied with the result.
After one or two rounds of creating a photomosaic and then discovering problem tiles or unwanted duplicates and removing them, you will hopefully have an output that you're happy with. Then you can zoom out of the finished product and see if the larger picture appears to emerge.
There's a certain amount of luck involved in how smoothly the larger picture appears in the final photomosaic, so you may want to generate several different versions using the same tile images as inputs. Unfortunately, I couldn't find a way to get AndreaMosaic to introduce any randomness into the process of placing the tiles -- if you run the program twice using the same tile images and the same specification for number of tiles per row, you'll get exactly the same output image. However, I was able to force the program to produce different outputs by specifying 35 tiles per row, then 36 tiles per row, then 37, 38, and 39, and comparing the results. The Mom's and Dad's faces from their wedding photo were roughly discernible in all of the resulting mosaics, but the 37-tile-width mosaic just happened to look the best.
8. Print and frame.
If you really want to save money, you can of course print the large image on multiple sheets of 8.5"x11" paper using your own color printer, then trim off the white borders and stick those pieces of paper together. I didn't do it carefully enough, and ended up with unattractive slivers of black and white where the different sheets met up with each other, and visible creases that still looked tacky even when the sheets were held together behind glass in a wooden frame. (Remember, while people will stand back from the picture to see the image that emerges from the photomosaic, people are also going to be looking at the picture up close to see the contents of the individual tiles.)
So I opted to go with a professional print shop that could fit the whole image on a single sheet of paper. Kinkos (aka Fedex Office) would have done it for $42 (their standard price for oversized color print jobs is $7 per square foot), but the local Minuteman Press franchise in Bellevue did it for $20. Since I had two picture frames, I actually put the 24"x36" printed poster into one frame and my home-printed multi-sheet taped-together "poster" into the other one, for a side-by-side comparison, and the colors looked much sharper and richer on the professionally printed poster. (Plus, of course, no creases between the sheets.)
9. Donate to support AndreaMosaic and PhotoGrabber.
I donated a little more to support AndreaMosaic than PhotoGrabber, just since AndreaMosaic looked like the harder program to write, but please support both of them if you like the way your photomosaic came out. Santa's watching!