Я в таком случае (было около 1000 картинок) генерил превьюшки с помощью ImageMagick, так чтобы превьюшки имели то же имя, что и картинка, только .thumb.png в конце. Генерить один раз. Потом просто проходимся по директории с картинками (я использую python и bottle.py), генеря страницу с превьюшками+ссылками на нормальные.
У меня картинки были в одном каталоге, но позже я сделал категории для них (в моём случае это были фото, скриншоты, рисунки и т.д, вы можете разделить на природу, города, людей и т.д.). Список всех картинок я вывел в файл (тупо ls), через пробел указывается категория, возможно менять через веб-интерфейс (в этом случае читается файл построчно в словарь, к нужной картинке добавляется категория, и словарь записывается в файл (на строке через пробел имя файла и категория). Если картинки в разных каталогах, то ненамного сложнее.
Далее на страничке делаем форму загрузки, при загрузке файла проверяем, что это изображение, делаем превьюшку, и кидаем само изображение и превьюшку куда надо.
минифреймворкpython3-imaging / PIL — используется для работы с картинками.
документация по PILЕсли было важно именно на php, прошу извинить. Если что-то непонятно по способу, представленному мной, объясню.