Как сделать изображения монохромными в WordPress

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

Появлялась ли у вас необходимость автоматически делать изображения монохромными при загрузке их на блог WordPress? Теперь есть решение. В этой статье мы покажем вам как, используя несколько простых инструментов PHP для работы с изображениями и функции Вордпресс автоматически делать изображения монохромными во время загрузки. Такие серые изображения можно использовать для слайдеров, в галереях или в любых других элементах сайта.

grayscale[1]

Первым делом добавляем код в файл functions.php вашей темы или в плагин для сайта WordPress:

add_action('after_setup_theme','themename_bw_size');
function themename_bw_size() {
	add_image_size('themename-bw-image', 100, 100, true);
}

Код выше просто добавляем дополнительный размер изображений для загрузчика. Размер установлен в 100 x 100px с кадрированием. Разрешение можно изменить под свои нужды. После этого добавляем еще один код:

add_filter('wp_generate_attachment_metadata','themename_bw_filter');
function themename_bw_filter($meta) {
	$file = wp_upload_dir();
	$file = trailingslashit($file['path']).$meta['sizes']['themename-bw-image']['file'];
	list($orig_w, $orig_h, $orig_type) = @getimagesize($file);
	$image = wp_load_image($file);
	imagefilter($image, IMG_FILTER_GRAYSCALE);
	switch ($orig_type) {
		case IMAGETYPE_GIF:
			imagegif( $image, $file );
			break;
		case IMAGETYPE_PNG:
			imagepng( $image, $file );
			break;
		case IMAGETYPE_JPEG:
			imagejpeg( $image, $file );
			break;
	}
	return $meta;
}

Код выше сообщает загрузчику о том, что нужно создать дополнительный размер для загружаемых картинок. Обрезает его до размеров, указанных в предыдущем шаге. Затем применяет фильтр для изображения: Grayscale.

Если вы проделываете это для миниатюр записи, то вывести их в своем шаблоне можно так:

<?php the_post_thumbnail( 'themename-bw-image' ); ?>

Если же вы используете для определенных вложений, то нужно использовать функцию wp_get_attachment_image.

Примечание: Необходимо изменить themename на название вашей темы.

Благодарности за этот интересный хак уходят к Otto.

VN:F [1.9.22_1171]

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии