The most portable way would be to define a directory outside of your app.
Configure it from either a context-init-param or a servlet-init-param and then write a
servlet that streams the images from that directory.
This will work whether your app is being run as a packed war file or as an exploded file system.
If you know your app is always going to be run from an app server that can and will run it from an exploded file system (like
Tomcat) then you can use ServletContext.getRealPath("/") to find the root of your webapp.
If you're planning on running in a clustered environment, you may want to consider storing the pics in a database or creating a separate and central image server.
You can check out SimpleStream at
http://simple.souther.us for an example of streaming images from a servlet. This example, however, uses ServletContext.getResourceAsStream which is appropriate for resources stored within your webapp. To access a file outside of your webapp, you will need to get the input stream with a FileReader. This is a small change and should be pretty simple.