How about the possibility to create a config for defining various image sizes?
{
"news_small" => "50,0,70", ([w,h,compr])
"news-big" => "700,0,70",
"portfolio-small" => "50,50",
"portfolio-medium" => "100,100",
"portfolio-big" => "800,0,100"
}
So $image->original would be the uploaded raw picture, while you could use $image->thumb("portfolio-medium") ...
which would be produced on demand. Don't know if it would fit in your concept, but just wanted to throw in my thoughts.