What you need is Direct to Garment Printing or DTG. It is a digital printing onto the t-shirt which enables a broader range of colors and photo like quality. I've used New Way Silk Screen Printing for the last couple of years.
Check out their page or give them a call for more information.
Printing on black is going to cost more because colors look so bad on black - you have to lay down white for the colors to show up the way they do on paper - so two print runs.