С версии 3.5.0 появился весьма удобный редактор изображений wp_get_image_editor. Сегодня поговорим о его возможностях, а в конце я приведу одну готовую полезную функцию.
Вызов осуществляется следующим образом:
1 |
$img = wp_get_image_editor( ABSPATH.'wp-content/uploads/img.jpg' ); |
Основной аргумент - это собственно путь до изображения, с которым мы будем работать. После чего можно использовать различные методы для изменения изображения.
Основной функционал следующий:
1) Изменение размера:
1 |
$img->resize( 180, 120, true ); |
Первое значение соответственно ширина нового изображения, а второе - высота. Последний аргумент отвечает за то, будет ли использоваться обрезка изображения или нет. В данном случае будет создана миниатюра с разрешением 180х120, которая будет обрезана по большей стороне, если само изображение не соответствует данному соотношению сторон (3:2).
2) Изменение качества сжатия:
1 |
$img->set_quality( 100 ); |
Главный аргумент - значение числа от 1 до 100, чем выше, тем лучше качество, чем ниже тем меньше размер итогового изображения.
3) Вырезка куска изображения:
1 |
$img->crop( $start_x, $start_y, $width, $heigh, $new_width, $new_height); |
Параметры $start_x и $start_y отвечают за отступ начальной позиции для вырезки, $width и $height - отвечают за ширину и высоту того куска, который будет вырезан. Последние два аргумента $new_width и $new_height отвечают за новый размер вырезанного куска изображения, можно не указывать.
4) Вращение:
1 |
$img->rotate( 270 ); |
Вращает изображение на соответствующий угол. Если угол не кратен 90, то пустой фон нового изображения будет залит чёрным цветом.
5) Зеркалирование:
1 |
$img->flip( true, false ); |
Здесь всего два аргумента, первый - будет ли повёрнуто изображение относительно горизонтали, а второе - будет ли повёрнуто изображение относительно вертикали.
6) Сохранение:
1 |
$save_img = $img->save(ABSPATH.'wp-content/uploads/new_file.jpg'); |
Сохраняет новое изображение и возвращает массив с данными о нём, $save_img['path'] - полный путь до изображения, $save_img['file'] - название файла, $save_img['width'] - ширина и $save_img['height'] - высота изображения.
А теперь полезная функция на основе этого функционала:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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; } } } |
Функция принимает значения пути до изображения, ширину и высоту, изменяет и сохраняет новую версию файла, если с такой шириной и высотой его нет, а потом возвращает путь до нового изображения. Актуально для тем, где много блоков вывода изображений с разными значениями ширины и высоты.