Есть несколько вариантов -
1) стандартная библиотека для работы с изображениями. код простой. один раз функию написали и забыли. Но кушает много памяти. (p.s. у вас ошибка в тексте >5mb, а надо наоборот).
Изображение в 3 мб может кратковременно нагружать оперативку на 500мб. малоприятно.
Но работает со всеми форматами.
https://www.php.net/manual/ru/imagick.examples-1.php
2) Использовать API сервисы , мы сейчас используем blitline. очень удобно. отправил задание, получил изображение через 3-5 секунд.
3)
https://jcupitt.github.io/libvips/ , но придется потратить время на настройку.
3 - прибегнуть к какой-то сторонней библиотеке, в которой работа с изображениями реализована попроще, но использовать что-то стороннее - крайне не хочется (стараюсь всё писать самостоятельно)
Откройте для себя github. это текущая задача у вас на самом деле не очень большая, а как вы будете word в pdf конвертировать своими силами?
2 - добавлять на изображения какой-то логотип или вотермарк. В таком случае изображение будет изменено, но опять же - даже если использовать этот подход - придётся сталкиваться с imagecreatefrom функциями, которые для каждого формата - свои.
imagick умеет работать с наложением изображений. думаю и lib vips тоже умеет.
поставить ограничение на загрузку файлов, ибо на данный момент используется стандартное ограничение в php (
Загружает так пользователь через телефон картинку, а ему в ответ - извините, нужно изображение поменьше. куда ему тыкаться?