С версии 3.5.0 появился весьма удобный редактор изображений wp_get_image_editor. Сегодня поговорим о его возможностях, а в конце я приведу одну готовую полезную функцию.
Вызов осуществляется следующим образом:
$img = wp_get_image_editor( ABSPATH.'wp-content/uploads/img.jpg' );
Основной аргумент — это собственно путь до изображения, с которым мы будем работать. После чего можно использовать различные методы для изменения изображения.
Основной функционал следующий:
1) Изменение размера:
$img->resize( 180, 120, true );
Первое значение соответственно ширина нового изображения, а второе — высота. Последний аргумент отвечает за то, будет ли использоваться обрезка изображения или нет. В данном случае будет создана миниатюра с разрешением 180х120, которая будет обрезана по большей стороне, если само изображение не соответствует данному соотношению сторон (3:2).
2) Изменение качества сжатия:
$img->set_quality( 100 );
Главный аргумент — значение числа от 1 до 100, чем выше, тем лучше качество, чем ниже тем меньше размер итогового изображения.
3) Вырезка куска изображения:
$img->crop( $start_x, $start_y, $width, $heigh, $new_width, $new_height);
Параметры $start_x и $start_y отвечают за отступ начальной позиции для вырезки, $width и $height — отвечают за ширину и высоту того куска, который будет вырезан. Последние два аргумента $new_width и $new_height отвечают за новый размер вырезанного куска изображения, можно не указывать.
4) Вращение:
$img->rotate( 270 );
Вращает изображение на соответствующий угол. Если угол не кратен 90, то пустой фон нового изображения будет залит чёрным цветом.
5) Зеркалирование:
$img->flip( true, false );
Здесь всего два аргумента, первый — будет ли повёрнуто изображение относительно горизонтали, а второе — будет ли повёрнуто изображение относительно вертикали.
6) Сохранение:
$save_img = $img->save(ABSPATH.'wp-content/uploads/new_file.jpg');
Сохраняет новое изображение и возвращает массив с данными о нём, $save_img[‘path’] — полный путь до изображения, $save_img[‘file’] — название файла, $save_img[‘width’] — ширина и $save_img[‘height’] — высота изображения.
А теперь полезная функция на основе этого функционала:
function get_img_theme($url, $width, $height){
$img_name=explode('/', $url);
$file_url='/wp-content/uploads/'.$img_name[count($img_name)-3].'/'.$img_name[count($img_name)-2].'/';
$file_name=explode('.', $img_name[count($img_name)-1]);
$file_name=$file_name[0].'-'.$width.'x'.$height.'.'.$file_name[1];
if(file_exists($file_url.$file_name))
return $file_url.$file_name;
else{
$image = wp_get_image_editor(ABSPATH.$file_url.$img_name[count($img_name)-1]);
if ( ! is_wp_error($image)){
$image->resize($width, $height, true );
$image->save(ABSPATH.$file_url.$file_name);
return $file_url.$file_name;
}
}
}
Функция принимает значения пути до изображения, ширину и высоту, изменяет и сохраняет новую версию файла, если с такой шириной и высотой его нет, а потом возвращает путь до нового изображения. Актуально для тем, где много блоков вывода изображений с разными значениями ширины и высоты.