phpneguru
@phpneguru

Автоматическое обрезание картинок Wordpress при загрузке?

Добрый день, суть вопроса такова: есть ли возможность автоматический обрезать загружаемые картинки? Есть более 100 изображений товаров с водяными знаками. И всегда они на одном месте сверху и снизу картинки(загружаемого с источника).
Есть какой ни будь скрипт или функция, которая бы обрезала на 100px сверху и на 100px снизу картинки при загрузке?
Обычные thumbnail и тд не пойдут. Так как они просто уменьшают саму картинку, а нужно чтобы при загрузке на сайт они обрезались.
  • Вопрос задан
  • 687 просмотров
Решения вопроса 1
V_A_B
@V_A_B
¯\_(ツ)_/¯
Добрый день.

Обычные thumbnail и тд не пойдут. Так как они просто уменьшают саму картинку,

не верю!

Вариант первый:
Через настройки в админке


❗❗❗ Читаем текст возле галочки ❗❗❗

60aa1e7dc3047787421884.jpeg

//получаем в шаблоне:
$attachment_src=wp_get_attachment_image_src(get_post_thumbnail_id(),'thumbnail');

Вариант второй:
//functions.php
add_filter('wp_handle_upload_prefilter','add_handle_upload');
if(!function_exists('add_handle_upload')){
function add_handle_upload($file){
    add_image_size('mysize',600,200,array('center','center'));
    return $file;
}}
//получаем в шаблоне:
$attachment_src=wp_get_attachment_image_src(get_post_thumbnail_id(),'mysize');

Общий результат

60aa1f141d0aa741377670.jpeg

Вариант третий:
Используем Imagick — отрезаем 100 px сверху и 100 px снизу

Все тумбнайлы, что создаст движок вп будут обрезаны ибо Мы обрежем исходник, а потом отдаем его вп на обработку
//functions.php
add_filter('wp_handle_upload_prefilter','add_handle_upload');
if(!function_exists('add_handle_upload')){
function add_handle_upload($file){
    $tmp_name=$file['tmp_name'];
		$image=new Imagick($tmp_name);
		$image->chopImage(0,100,0,0);//отрезаем 100 px сверху
		$imageprops=$image->getImageGeometry();//чтобы отрезать снизу надо узнать высоту и отнять 100 px и уже от нее отрезать все то, что ниже
		$image->chopImage(0,100,0,$imageprops['height']-100);//отрезаем 100 px снизу
		$image->writeImage($tmp_name);//перезаписываем временный файл

    return $file;
}}


60aa732691e7d131364392.png


з.ы. все возможности Imagick
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Pavstyuk
https://ru.wordpress.org/plugins/wp-smushit/
Попробуй вот этот плагин он умеет обрезать изображения до заданных размеров, но откуда точно он отрезает, не могу подсказать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы