PicMeme - automated visual meme browsing

latest news

October 6th, 2002 -- Version 1.02 is now available for download.

This version contains several bugfixes and many new and exciting features, including:

You can download it now and simply run the installer again over any existing version.


[Pic] n. A photograph, image, drawing, diagram, or still picture

[Meme] n. A unit of cultural information, such as a cultural practice or idea, that is transmitted verbally or by repeated action from one mind to another.

PicMeme is a stand alone Windows application and Windows screen saver that crawls through internet web space and collects interesting pictures to be displayed on your screen.

PicMeme provides a window into the heart and soul of the internet. An ever-changing collection of visual data is compiled by PicMeme's automated web browsing engine. It is web surfing without the effort. It is browsing without the burden of reading.

As PicMeme crawls the web, it grows a vast collection of URLs so that even more information can be mined. Images are checked into an "image store" on the hard drive and rotated out over time. A history of visited sites is maintained to minimize the duplication of data and increase browsing efficiency. Built-in garbage collection also happens automatically.

Although it is primarily intended to run on computers with persistent internet connections, it can be used on machines with no network connection to create a slide show of personal photos. PicMeme is quite configurable and has options to control web spidering aggressiveness, image sizes, display modes, display speed, image types, memory and usage.

With the amount of data currently available on the web, you are guaranteed a unique, personalized, screen saver experience...or your money will be refunded.

If a picture is truly worth a thousand words, then this work of software can be considered epic...


Because of the dynamic, chaotic nature of this software, it impossible to accurately capture or represent the program in a few simple screenshots. However, the following may give you a slightly better idea of what is possible. Ultimately, it is something that must be experienced to be fully understood. All screenshots [should] open in a new browser window. All images were captured with PicMeme running as a Windows app and not a screen saver.

These first four are sample screens with the fill mode configured to "stretch". You may notice that the URL list is set to 5000 and the image store is full at roughly 20MB.

The next three images demonstrate the "collage" fill mode. Keep in mind that the window can be sized to any desired dimension and dragged around the desktop...

The following images show the overlaid help screen and a couple of setup screens to demonstrate just how configurable PicMeme is:


The following are just some of the features available with PicMeme:


If you like this software, feel free to link here with this ultra distracting web button!


This section describes how to use and configure PicMeme. If you are looking for information specific to running PicMeme as a stand-alone slide show image viewer, see below.

PicMeme configuration is done through a configuration dialog. In application mode, you can right click and choose settings. In screen saver mode, you should click the "Settings" button on the "Screen Saver" tab of the "Display Properties" (opened by right-clicking an empty area of the desktop and choosing Properties) window.

The main configuration screen is shown below:

The main options are as follows:

The URLs/seeds configuration screen is shown below:

You can add any number of URLs to the seed list. Seed URLs are used when PicMeme first starts or when the (R)estart command is given. All URLs should be well formed and contain a leading protocol specifier (ie. "http://").

Care should be taken to provide a good set of seed URLs. The seed URLs ultimately determine where PicMeme will browse, and what kinds of images (at least initially) you will see. If you provide music related URLs (ie. mtv.com) in your seed list, you can expect to see many images of pop artists and band related stuff. If you provide a seed to imdb.com, you should expect to see pictures of actors and screen shots from feature films. Get the picture? The URLs given here should point to pages with a relatively high number of links so that the link queue is never exhausted.

The site ban list controls allow you to restrict the behavior of the web crawling engine. If you wish to prohibit certain sites from being visited, you can enter them here. Both leading and trailing wildcards are supported in the site ban list.

For example, if you wish to prevent the browsing engine from visiting playboy.com or fbi.gov, you should enter *playboy.com and *fbi.gov into the site ban list. To prohibit fetching anything from sites with the word 'sex' in them, consider adding sex to the ban list.

Keyboard Commands and Help Screen

The following image shows the help screen overlaid on a random image:

The help screen can be toggled on or off by pressing F1 while PicMeme is running. Pressing a letter corresponding to a command will execute the desired option. The following is an overview of the available commands:

Miscellaneous usage notes

PicMeme limits itself to one running instance. Period. This means that you cannot run multiple things on multiple monitors. You cannot run multiple copies of PicMeme at the same time. It also means that if you leave PicMeme running as an application, the screen saver will not kick in. Sorry, but that was an intentional design choice and it is unlikely to change.

When running in window-mode as a stand-alone windows application, PicMeme can be dragged around the screen and resized...just like any other window.

Stand alone slide show

First, it should be understood that PicMeme was not originally intended to be used as a personal slide show screen saver. That being said, it was realized that PicMeme can be used to display your personal images in a random fashion.

To run PicMeme with your personal images, several things must be configured. By following the steps below, you should be able to set up a slide show of your personal images:

  1. Install PicMeme. Be sure that the screen saver option is selected during installation.
  2. Open the screen saver properties: Right click on an empty area of the desktop, then select properties, and then the screen saver.
  3. Choose PicMeme as the active Windows screen saver (if it is not already).
  4. Click Settings. You should see the PicMeme configuration screen appear.
  5. Select the URLs/seeds tab. You should remove all URLs from both lists by highlighting each one and pressing the delete button.
  6. Select the General tab. You should change some of these options...
  7. Set the "Max image store size (MB) to something very large, like 1000. You should try and set this number larger than the total number of megabytes you would ever want to store in the data\images directory. For most people, 1000 is probably sufficient.
  8. Set the "Garbage collection every" option to something high. 100000 is probably a good guess.
  9. Because you will only be viewing your personal photos, you probably wish to uncheck the "Show status line" option
  10. Click OK to finish the PicMeme configuration
  11. Click OK to finish with the Display Properties

Now that you have the settings correct, you must copy your personal photos into PicMeme's images directory. It is very important that you copy the files and NOT move them into the PicMeme directory! You do not want your original files in the PicMeme directory -- there is a remote possibility that the garbage collection mechanism could delete your files. If you used the standard installation path, you will want to copy your photos to C:\Program Files\PicMeme\data\images. If you use another directory, you will want to copy to the images\data subdirectory. Simply use the Windows explorer to copy/paste the desired files into the data\images directory.

The next time your screen saver kicks in, it should be displaying your personal images. Enjoy.


The following are some items which can/should/could be implemented in future versions of PicMeme. They may not make much sense to you unless you've poured over the code in gory detail...


PicMeme is Copyright (c) 2002 jason plumb / noisybox

This software is released under the GNU Public License. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

A full version of the GPL can be viewed here or by visiting http://www.gnu.org/copyleft/gpl.html

Ok, one caveat. It's not a license term, but simply a request: If you use this software as part of a live performance, please offer to provide me with a copy so I can see how PicMeme is being used. Thanks.

Writing software is not a crime. Keep free, open source software alive. Donate to projects you value...even if it isn't this one.

props and thanks

First, a HUGE thanks to Stacy for putting up with me during the numerous hours I slaved away on this project. Thanks also to Dean the Bean for beta testing and funny funny approval. This software would not have been possible without the work of numerous developers of free, quality, open source libraries. These guys truly deserve all the credit: libxml, libcurl, libjpeg, libpng, libungif and zlib.

Although the original idea for PicMeme was floating around my neurons for quite some time, I must give inspirational credit to EveryImage from rhizome.org (who unfortunately now require registration...go figure) and EtherPEG. If you're not familiar with those projects, please have a look.


Feedback, questions, feature requests, patches, complaints, kudos, bug reports, donations, flames, and suggestions can be sent directly to the author at jason@noisybox.net