it-swarm.com.ru

add_image_size масштабируется, даже если для параметраrop установлено значение true

Я пытаюсь обрезать изображение размером 1000 x 648 до 400 x 400. Я использую этот код в functions.php

add_theme_support( 'post-thumbnails' );
add_image_size('shop-size', 400, 400, array(center,center) );
add_image_size('shop-size2', 401, 400, true );

затем я иду к плагину регенерации и запускаю его. Пока я запускаю его, я открываю загрузку wp-контента, чтобы проверить, что происходит.

Я смотрю, как это создает изображение размером 400x259, которое масштабируется. Плагин регенерации даже говорит, что собирается сделать обрезку 400х400, чтобы соответствовать размеру магазина, а затем не делает этого.

Я проверил, загружен ли Gd этим, и возвращает "Gd загружен"

<?php if (extension_loaded('Gd')) 
     { 
         echo "Gd loaded"; 
     } else { 
         echo "not loaded"; 
} ?>

Я также попытался подключить его в after_theme_setup следующим образом:

function add_custom_sizes() {
    add_image_size( 'map-size', 199, 199, array('center','center') );
    add_image_size('shop-size', 599, 599, array('center','center') );
    add_image_size('discover-size', 749, 620, array('center','center'));
    add_image_size( 'map-size1', 198, 199, true );
    add_image_size('shop-size1', 598, 599, true );
    add_image_size('discover-size1', 748, 620, true);
}

add_action('after_setup_theme','add_custom_sizes'); 

однако, когда я регенерирую, он все равно делает 198x165 вместо 198x199 (из 768 x 641)

Родитель называется "подъем" процветающими темами. Я связался с ними, но они сказали, что у них нет поддержки для вопросов разработчиков.

Родитель использует add_image_size только один раз, я пытался удалить это, но у меня все еще была проблема масштабирования вместо обрезки.

Я включил файлы повышения ниже. У меня есть предчувствие, что они делают какую-то кастомную вещь? И мне придется переехать это как-то?

процветать файл оптимизации изображения - https://Pastebin.com/1QEa6YJv процветать функции - https://Pastebin.com/pAqBt285

Может ли кто-нибудь помочь мне понять, что я делаю не так? Спасибо за любую помощь.

3
Tintinabulator Zea

из вашего вопроса я под, что вы хотите обрезанные изображения фиксированного размера при загрузке изображения, почему бы вам не использовать wp_get_image_editor. Я использовал его в своем проекте, где я хотел обрезать изображения фиксированного размера, поэтому я сделал этот код.

$path = $newPath['basedir'].'/newImgas/';
$cropfile = uniqid() . '.png';
$cropfilename = $path.$cropfile;
$cropImage = home_url(). '/wp-content/uploads/newImgas/'.$cropfile;
$c_image = wp_get_image_editor($newImage);
if ( ! is_wp_error($c_image) ) {
  $c_image->resize( 600, 600, TRUE);
  $c_image->save( $cropfilename );
}

Вы можете найти пример здесь . Пожалуйста, ответьте мне, если это не то, что вы хотели.

1
Vinit

Я думаю, что ваша проблема может заключаться в том, что вам нужно установить высокий приоритет (попробуйте 101 или даже 999, если это решится):

add_action('after_setup_theme', 'add_custom_sizes',  101 ); 
1
T.Todua

Тот факт, что Gd загружен, не означает, что он фактически используется для обработки изображений. Из кода Pastebin, который вы даете, я делаю вывод, что ваша тема поставляется в комплекте с оптимизатором изображения Kraken (в виде отдельного плагина или в комплекте с темой другим способом).

Поскольку использование add_image_size только помещает данные в массив, это зависит от функции обработки изображений, чтобы фактически использовать их. Обычно это делается функцией wp_save_image , которая позволяет использовать любой редактор изображений (в строке, где написано: $img = wp_get_image_editor).

Так что, вероятно, редактор Kraken игнорирует настройку обрезки. Вам нужно будет найти настройки плагина и изменить их, если ваша тема позволяет вам. Кракен является платной схемой, поэтому могут быть ограничения.

В качестве альтернативы вы можете использовать фильтр wp_image_editors , чтобы изменить редактор изображений обратно на Gd, но, поскольку я не знаю, как тема использует Kraken, я не уверен, каков будет эффект от этого.

1
cjbj