Есть ряд факторов, которые следует учитывать.
Лучший способ не обязательно хранить изображения в базе данных. Это может быть хорошим выбором, особенно если вы хотите реализовать контроль доступа к изображениям. Однако это происходит за счет того, что необходимо извлечь изображение из базы данных и загрузить его в память, чтобы оно могло быть передано сервером.
Однако, поскольку это изображения профиля и, вероятно, видимые всем, кто посещает профиль этого пользователя, я бы рекомендовал сохранить файл как файл на сервере и сохранить ссылку на этот файл в вашем базы данных.
Когда дело доходит до этого, веб-серверы очень хорошо справляются с обслуживанием файлов. Если вы можете использовать это, вы должны.
Наконец, у вас есть проблемы с пространством. Во-первых, вы можете предотвратить загрузку изображений определенного размера. Вы также можете, как вы предлагаете, автоматически обрезать до выбранного размера.
Если проблема заключается в большом количестве пользователей, вы всегда можете хранить свои медиафайлы на отдельном сервере, сохраняя полную ссылку на каждый ресурс, например: -
<img src="http://images2.mydomain.com/image/profile_123.png" alt="A profile pic" />