Photo transcoding is a fast enough operation that for most sites doing it on-demand with a cache of previous results makes the most sense.
Eg. store only the original to start, when 1024p wide version is requested, check filesystem or database blob cache for 1024p version, if it exists, serve it, if not, transcode then serve it, cache it so next time it is requested you'll have it. This way you don't spend cycles transcoding photos at resolutions that are subsequently never requested as various sizes.
And existing APIs like ImageMagick make all the normal image processing features a breeze to implement.
Granted, photo transcoding is still a good idea for a service for people who really don't care about it and just want something that works out of the box, but video transcoding is a much tougher nut to crack (despite ffmpeg/libav and other solutions, there's still a lot of black magic people who haven't gotten their hands dirty with this sort of thing don't realize is an issue until they start transcoding videos and noticing audio sync and other such issues) and thus I'd be way more likely to pay for a service to do it rather than roll my own with video as opposed to photos.