That's typically going to be problem specific. A simple cat/dog tutorial would be reasonably easy with a lot of the already existing libraries like scikit-image/PIL.
The other problem here though is corpus layout. Image net and the academic datasets typically require special readers, but even then: for actual datasets there's a few ways to do the corpus layout. In our experience there are 2 things that have worked well have been: a folder per label or labels in the name.
Then there's still having balanced minibatches though. When you get to having balanced minibatches images segmented by folder means you don't get balanced minibatches out.
Then there's disk to think about, do I really want to re run the same pre processing every time I train? Then: how do I explain that to a beginner?
So I'm probably going to want to have a corpus generator where we end up with a pre saved/balanced minibatches for training..which leads us back to what you see now.
A good middle ground here might be a corpus generator that takes all the minor stuff like that in to consideration...but still data is messy.
I would suggest looking at the wealth of imaging libraries out there in python and building something based on a "from scratch" image corpus.
Minor plug: We thought about that a lot in building deeplearning4j. http://deeplearning4j.org/canova
You may not use java but the idea of "vectorization" is still a good one I think any ml practitioner who's touched pandas could appreciate. We built an abstraction called a datasetiterator which auto magically returns the batches for people so they don't have to think about the details but still having access to "real" data. I'm not sure what the python equivalent to this would be though.