Well the biggest problem I see here is dumping the DB, as it will get very huge the more photos you will need to store.
Another thing are thumbnails, do you plan to use such? If so you will have to store photo + thumb, so calculated with low values of 150kb per foto (which is very small) and 50kb per thumbnail will mean about 20GB ot tablespace just because of storing fotos there. I don't want to know how much time it takes restoring the DB in case of a crash.
I'd suggest storing the images + generated thumbs on a hdd. This will also give you the flexibility to e.g. move the images to a completely different server once as there you will need storage more than a fast cpu.
Regarding the direct access, it's not a big deal preventing the webserver to have access to the imagefolder. Instead code a script serving the pictures.
Maybe I should implement a sort of cache, so the DB won't have to work so hard?
Fetching images is not a big deal for a DB as a DB is used to do complex queries. It's like using a sledge-hammer to crack a nut.