Можно хранить имя файла (good.jpg) и тип картинки (goods), например картинка товара, на основе этой информации строить путь, так, как вам угодно, например:
/media/origin/goods/g/go/good.jpg
/media/origin/goods/t/to/tovar.jpg
Если нужно сохранить картинку с таким же именем, то в конец дописываем индекс, например:
/media/origin/goods/g/go/good.jpg
/media/origin/goods/g/go/good__1.jpg
/media/origin/goods/g/go/good__2.jpg
Подпапки после типа картинки /g/go/ нужны, чтобы в одну директорию не сваливалось слишком много файлов.
Если в качестве имени файла используются цифры (напрмер - это индексы записей в базе), то подпапки лучше формировать с конца имени файла, например:
125.jpg -> /5/2/125.jpg
126.jpg -> /6/2/126.jpg
это позволит более равномерно распределять файлы по папкам.
Такой вариант позволит в будущем изменить место хранения картинок, поменять логику формирования пути к картинке, и т.д.
Закешированые картинки соответственно будут храниться, например, по такому пути /media/cached/goods/<название пресета (200x120r)>/go/g/good.jpg
Пресет можно формировать, например, на основе ширины, высоты, способа масштабирования, и названия фильтра