What Ian Price said i believe is best.
However i have been trying a method simular to what you said but saving rooms not the whole level as one giant map.
I've been working on a editor for a couple weeks although i only get to use dbp on the weekends.
The setup i am using currently is 64 x 64 tiles these are placed on a grid with the mouse creating my level these are the visible tiles.
Then after that is build have another overlaying grid alpha so transparent and create a collision grid over it placing c where collision needs to take place and a p where the player starting position is.
Then saves the first out as a single image file and the second grid is then read and written to a file storing a 1 if the grid = x, a 2 if the grid = p, and a 3 if the grid = c then in the tester program i load the image saved then use another array to read the collision file and place the tiles accordingly hiding the c sprites.
Thats as far as i am collision is a little iffy right now and needs fixing but that's my shoddy code it does work and is probably the best way to go since you can build any level you wanted in a couple of mins hit one button save it out and just test or play that level.
As for adding in more rooms to i have yet to try that so using a single .png for a background might not be effective enough although my plan is to try and load maybe 3 or 4 rooms at a time when the player reaches a certain point have the next group of rooms load and delete the passing group have to see how fast this would work or not though.
Also if you plan on making more then one 2D game ever i would say take the time and make a editor it will save you from having to code basically the same thing over and over for each game you make so far my editor is only at a mere 369 lines of code thats with comments.
Your signature has been erased by a mod -- please resize to under 600x120...