Есть WideImage , что довольно хорошо. Кэширование - это не встроенный AFAIK, но это должно быть тривиально, чтобы поставить сверху ...
if (!file_exists($filename . '_thumb.jpg')) {
// Load original, resize, save to $filename_thumb.jpg
}
// serve $filename_thumb.jpg