Как сделать автоматическое маштабирование изображений при загрузке?
Есть wordpress сайт, на который контент-менеджеры загружают изображения для использования в своих статьях. Зачастую, они грузят фото напрямую с фотокамеры разрешением, типа 5000х5000 и весом в несколько МБ, что в конкретном случае не нужно и жрёт место на хостинге.
Желание - автоматически масштабировать оригинал загружаемых изображений до, к примеру, 1200px по максимальной стороне. Про использование на фронте соответствующих размеров я в курсе, конечно, но нужно обрезать именно оригинал (а уже из обрезанного оригинала создавать миниатюры).
У кого-нибудь есть идеи по реализации данного функционала?
ВАЖНО - суть проблемы в том, что оригиналы отъедают место на хостинге. Пользоваться add_image_size() я умею, и на фронт вывожу то, что нужно. Но что делать с оригиналами?
был случай. знакомый обратился с проблемой. на хостинге место быстро закончилось по количеству и объему. проблема оказалась в том, что коллеги с фотика тоже заливали фотки в большом формате. суть в том, что ворпресс создает при таком раскладе копии с небольшим диапазоном в разрешении. вот и выходило, что при загрузке такого изображения, создавалось до 20 копий одного файла.
Для этого Вам необходимо использовать фильтр wp_handle_upload_prefilter в сочетании с Imagick. тут есть не большой пример с сылкой на сам Imagick, но надо обязательно учитывать, что загружаться может не только изображение. т.е. надо проверять формат. В идеале (строчек 20 направленного кода) через имаджик сразу можете и качеством управлять. + повесить управление маштабом через кастомные поля. Ещё ньюанс: обрезать надо по одной стороне, с сохранением пропорций для второй...
В WordPress уже всё придумали за вас: add_image_size().
Смысл в том, что вам нужно в своей теме зарегистрировать необходимые размеры изображений. И все новые изображения сразу будут обрезаться в указанных размерах. Далее, где это необходимо вы сразу сможете без труда получать нужные размеры по их названию, которое указали при регистрации.
Важно понимать, что это работает только на новых картинках. Если вы хотите создать миниатюры для новых изображений - нужно использовать WP CLI или соответствующий плагин (подобных плагинов масса).
С add_image_size() всё понятно, но мне нужно обрезать именно оригинал (ну, или, как вариант - создавать из оригинала нужные размеры, а затем удалять его). Проблема в дисковом пространстве.