If you have the image in Blob format then you're best bet it to use ImageIO and read the blob input stream directly.
This will give you a java.awt.BufferedImage object which you can then render to any type of image using ImageIO.
BufferedImage image = ImageIO.read( blob.getInputStream() );
// Feel free to modify the image here using image.createGraphics()
// add a water mark if you're feeling adventurous
ImageIO.write( image, "png", someOutputStream );
I'm not intimately familiar with how facebook uses images. I think it differs depending on what you're doing. For facebook applications, I think you're still responsible for hosting the image, but facebook will act as a caching proxy and request the image just once, then serve it to all the client that need to see it. If it's a user posted image, then I think facebook stores the image completely (obviously a user uploading a picture does not have it on another server usually).
If you're looking to just display the image "as is" in response to a a web request, then you can pipe the output of the Blob directly the client, although this keeps database connections open for a while, you might be better copying to a disk cache then serving to the client.
I have to confess, I couldn't find anything useful about what a stirng_image actually is? Perhaps you could clarify if this answer doesn't meet your needs.