Сжатие и конвертация загружаемых изображений

Всем привет, участники Discourse,

Мы уже несколько лет самостоятельно хостим свой экземпляр Discourse и накопили коллекцию изображений на S3 объёмом около 30 ГБ. За это время мы несколько раз меняли подход к тому, какие типы файлов изображений разрешать и какой максимальный размер исходных загрузок поддерживать. Также за последние 6 лет в Discourse появились новые функции, которых у нас не было в начале, поэтому основная проблема связана со старыми постами. Новый ресайзер изображений в браузере значительно помог нам оптимизировать использование хранилища и работает отлично.

Мы планируем конвертировать все существующие загруженные изображения в формат JPG и уменьшить их размер, чтобы сократить расходы на хранение. В ходе поиска я нашёл следующее:

https://github.com/discourse/discourse/blob/main/script/downsize_uploads.rb

Подумал, что можно адаптировать этот скрипт. Однако он решает задачу уменьшения размера, но не конвертации форматов: например, он уменьшит исходный размер большого PNG, но оставит его в формате PNG, вместо того чтобы преобразовать в JPG с новым размером.

Похоже, мне придётся написать собственную версию этого файла:

Прежде чем приступить к этому, я решил поделиться своими планами. Возможно, кто-то подскажет: «А можно сделать очень простую вещь без написания кода» — и это сделает меня счастливым.

Буду благодарен за любые идеи, замечания или комментарии. Если мне всё же придётся написать новый rake-скрипт, я поделюсь им здесь, если кто-то ещё находится в похожей ситуации.

Спасибо!

Это был ключевой момент, поэтому выделю его, на случай если у кого-то есть идеи. Мы всё ещё ищем лучший способ это сделать. Наш текущий план таков: из-за высоких затрат на хостинг для этих старых изображений мы, возможно, просто удалим 5 лет старых сообщений, чтобы снизить расходы. Это жаль, но у нас очень скромный бюджет. :slight_smile: