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:
- Transparency options -- run PicMeme as a semi-transparent window in 2k/XP!
- Improved display quality when resizing images -- the stretch options
can now use halftone features.
- Ability to handle web pages that use frames -- no more failing to get URLs
from sites that use frames
- Initial (albeit sketchy) support for multiple monitor configurations.
- Improved "look and feel" for app mode
- Improved configuration dialogs
- Improved popup menu layout
- Improved bookmark pages have creation date and links to next and previous days
You can
download it now and
simply run the installer again over any existing version.
introduction
[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...
screenshots
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:
features
The following are just some of the features available with PicMeme:
- NEVER look at the same boring, tired screen saver again!
- Efficient Windows application written in C/C++ (no MFC,VB,IE,etc. crap to cause bloating)
- Free and Open Source software (free == good!) No expiration,
no nags, no ads, no spyware, NO COST!
- Works as both a stand-alone Windows application and a Windows screen saver
- Small download, small footprint (excluding image store and URL cache), small memory footprint
- Can work as web spider or with your personal image data
- Install is fast and easy, uninstall leaves nothing behind (including the registry)
- F1 help screen overlaid on images
- Works with JPEGs, GIFs, and PNGs, and includes configuration to prevent undesired
image types from being downloaded
- Drawing modes include stretch to screen, actual size, fit to screen, and random collage modes
- Bookmark function to save your favorite found images
- User configurable seed URLs to start browsing in the direction you choose
- Configurable browsing/spider speed -- can be used on T1s or dialups
- User adjustable display speed - ranges from slow to seizure-inducing
- Ability to limit downloads based on image file size
- Ability to ban sites from download -- prevent unwanted images
- One-key deletion of unwanted images
- Status line shows what URLs have been visited and disk memory usage
- Built in, user-configurable garbage collection prevents your hard drive from filling up
- Did I mention that it was free?
download
- PicMeme_v1.02.exe - (431kB) -
PicMeme version 1.02 - Windows installer. This is probably what you came here for.
This is probably all that you need.
Simply download this version and install over any existing version.
- PicMeme_v1.02_src.zip - (117kB) -
PicMeme version 1.02 source code only. Unless you plan on doing software
development or just really want to see the code, you probably don't need
this.
Note: If you are downloading the source, it is likely that you will run
into some problems. This project uses several open source libraries
to accomplish various things. This includes
libxml,
libcurl,
libjpeg,
libpng,
libungif
and
zlib
It is not a trivial matter to get the above libraries all working in Windows.
It can be done, but it's certainly not very fun. I believe there were
some bugs in the GIF library that caused some problems, and I think I fixed a few
bugs on my local version. If you want/need help, feel free to email,
but I can't guarantee a quick response or total solution If you want/need help, feel free to email,
but I can't guarantee a quick response or total solution.
If you like this software, feel free to link here with this ultra distracting web button!
configure
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:
- Data directory - This is the directory where PicMeme keeps its data.
This directory is created at install time and should, for most purposes, not
need to be changed.
- Max image store size - This number specifies the maximum number of megabytes
that PicMeme will keep in the image store (in the data\images directory).
This can be set to whatever you want...however, setting this number too
high could fill your hard drive with images...setting it too low will cause
the display to be more repetitive. Default: 20Mb.
- Max history cache size - This number indicates how many megabytes will be
allocated to the history cache of visited sites (data\*_visited files).
Again, it's purely preference...but a small cache can cause inefficient
performance. Default: 5Mb.
- Max # links in memory - This is the maximum number of URLs (links) to keep in
memory. If you have a lot of RAM in your machine, feel free to increase this
number. Setting this number too low will increase the chances of the
browsing engine expiring all links.
Default: 5000
- Wait between page fetches - This is the number of milliseconds (1000 milliseconds
per 1 second) to wait
between web page fetches. This is one of the most important settings.
A higher number will cause links and images to be gathered more slowly, while a
smaller number will cause more rapid web spidering. Caution should be used when
changing this setting -- a very small value could use all available bandwidth on
your internet connection.
Default: 5000 (5 seconds)
- Image display duration - This is the number of milliseconds (1000 milliseconds
per 1 second) to display each image. A longer value will keep the image on screen
for a longer time, a shorter image will display images more rapidly.
For a headache inducing effect that will certainly eat all available CPU, cause
nausea, vomiting, and seizures, set this value to 1.
Default: 2000 (2 seconds)
- Garbage collection every - This value tells PicMeme how frequently to perform
garbage collection, in seconds. 120 is generally a good value. This number
can be increased, but setting this value too low is not recommended.
Default: 120 (2 minutes)
- Dload images between X and Y - These values tell PicMeme what images sizes to
consider for download. Any images smaller than the first number or larger than
the second number will be ignored. If you hate seeing blocky images, try turning
up the lower number. If you set the first number greater than the second number,
you will probably get nothing.
Default: 3500 and 600000
- Fill mode - The fill mode option specifies which mode should be used
when displaying images:
- Stretch - the image is stretched to fill the window/screen
- Fit - the image is expanded to fit the window/screen, but the proportions are maintained
- Actual - the image is not resized and displayed in the center of the screen
- Collage - images are displayed on top of one another in actual size to create a collage effect
Default: Stretch
- Desired image types - These check boxes allow you to configure which image types to download.
If, for some odd reason, you don't wish to view/download a certain type of image, simply
uncheck the appropriate box.
Default: jpeg, gif, and png.
- Show status line - Determines whether or not the status line should be displayed.
The status line shows the most recently fetched images/links and provides
indicators for the number of links in memory and the total size of all images.
Default: Checked (Yes, please show status line)
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.
* It should be noted here that the ban list is simply a rudimentary attempt
at filtering and should not be considered a comprehensive solution.
If you are ultimately concerned about viewing inappropriate(?) material, you
may wish to evaluate other, lower-level filtering solutions. It is the author's
opinion that 1) no filtering solution is [yet] complete and 2) current filtering
software is really good at filtering out "normal" content. Without real-time
image analysis software, it is yet to be
determined if or how any filtering solution could possibly block a
site called something like "www.newpopmusic.com" from serving up
a pornographic image called "one.jpg"...but I digress.
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:
- (n)ext - choose another random image and display it immediately
- (b)ookmark - save the current image in the bookmarks folder. This
command will copy the current image to the bookmarks directory and
create an entry in the daily bookmarks web page. Once you have added
a bookmark, check in the data\bookmarks directory for more information...
- (d)elete - sick of seeing a certain image? want to delete it from the
image store? press 'd'.
- (r)estart - pressing 'r' will cause PicMeme to purge the current URL list,
delete all images from the image store, and start over from scratch with
the set of seed URLs.
- (k)ut - the 'k'ut command tells PicMeme to randomly purge half of the
URLs in memory. This feature only works when the current number of
URLs in memory is more than half the maximum value.
- (m)urder - deletes the current image, deletes all images from the same
host from the image store, and adds the associated host to the ban list.
If you end up seeing something you really don't want to see again,
consider pressing 'm'.
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:
- Install PicMeme. Be sure that the screen saver option is selected during installation.
- Open the screen saver properties: Right click on an empty area of the desktop,
then select properties, and then the screen saver.
- Choose PicMeme as the active Windows screen saver (if it is not already).
- Click Settings. You should see the PicMeme configuration screen appear.
- Select the URLs/seeds tab. You should remove all URLs from both lists by highlighting
each one and pressing the delete button.
- Select the General tab. You should change some of these options...
- 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.
- Set the "Garbage collection every" option to something high. 100000 is probably
a good guess.
- Because you will only be viewing your personal photos, you probably wish to
uncheck the "Show status line" option
- Click OK to finish the PicMeme configuration
- 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.
todo
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...
- Priority #1: Fix bug that causes the display "loop" (timer) to stop, forcing
a single image to be displayed indefinitely.
- Priority #2: Fix bug that causes PicMeme to continue running in memory after
screen saver ends.
- Maintain in-memory [limited length] queue of displayed images, to allow
for PgUp and PgDn keys
- Configuration option to overlay source URL. BitBlt function for this to
provide good readability(?)
- Configuration options for limiting images based on width/height/pixelct
- Keyboard keys to change display speed up/down.
- Pause key to [temporarily] pause the flip sequence (some "reasonable" delay)
- change URL config screen to use writeprivateprofilesection (like the ban list)
so that deletes actually work...doh!
- Look at perhaps setting SetStretchBltMode explicitly???
- Option to purge NewLinks to XX% when full
- Menu options - purge all .visited, purge all images, ?
- Setup for changing colors, fonts
- Consider limiting URLs per site?
- Option to cut URL list to X% when full
- Improving multi monitor support options(?)
- Website, documentation
- Elaborate on possible expansions, alternate uses
- Plugins - DLLs that can mess with shit. Pass in hosdc and image prior
to bitblting to screen. Perhaps pass in all bitmaps and DCs.
- Plugin to set/mess with SetStretchBltMode
- Plugin to overlay text?
- Plugin to tweak colors -- filters?
license
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.
contact
Feedback, questions, feature requests, patches, complaints, kudos, bug reports, donations, flames, and suggestions
can be sent directly to the author at
jason@noisybox.net