You have to declare the image at the global level, and load it in setup(), because loadImage() at the global level doesn't know the data folder yet.
See, for example, the example at http://wiki.processing.org/w/I_display_images_in_sequence_but_I_see_only_the_last_one._Why%3F
Have you tried to output a simple image in PDF and see what the "blow up" gives, compared to a simple image?
Unless the PDF reader is very smart (why not?), you might see exactly the same awful result: as said, you don't save a vectorial information, the kind that can be scaled infinitely. Bitmap image, when scaled up too much, generally looks bad. The container (image format or PDF format) doesn't change much the result.
See, for example, the example at http://wiki.processing.org/w/I_display_images_in_sequence_but_I_see_only_the_last_one._Why%3F
Have you tried to output a simple image in PDF and see what the "blow up" gives, compared to a simple image?
Unless the PDF reader is very smart (why not?), you might see exactly the same awful result: as said, you don't save a vectorial information, the kind that can be scaled infinitely. Bitmap image, when scaled up too much, generally looks bad. The container (image format or PDF format) doesn't change much the result.