Я бы предложил не добавлять изображения в базу данных. По крайней мере, не база данных MySQL. Вместо этого попробуйте сохранить изображения в файловой системе и сохранить только путь к файловой системе в базе данных. Попробуйте переименовать файлы в длинные уникальные случайные имена и сохранить их вместе с исходным именем файла в базе данных.
Используя PHP, вы можете обслуживать свои файлы, используя их оригинальные имена:
header('Content-Type: image/jpeg');
header('Content-disposition: attachment; filename="'.$filenameOriginal."\n");
readfile($filenameStorage);
MySQL isотличная обработка текста, большие двоичные данные - это отдельная история. Вы также должны спросить себя, что вы получаете, храня изображения в базе данных.
О сжатии. Изображения обычно сжимаются довольно хорошо, поэтому дальнейшее сжатие их для хранения базы данных, как правило, неосуществимо.
Я также настоятельно рекомендую вам ознакомиться с подготовленными выражениями для MySQL. https://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php
Это позволяет вам использовать такие запросы, как:
INSERT INTO images_tbl(image) VALUES(?)
Знак вопроса означает переменную, которую вы передаете в MySQL как двоичный файл с отдельной функцией. Это предотвращает атаки с использованием SQL-инъекций, которые определенно не будут добавлены addlashes ().
https://www.php.net/manual/en/mysqli-stmt.bind-param.php