Модули pygame.image и pygame.transform. Урок 9
Загрузка и сохранение изображений в Pygame
Функция load() модуля pygame.image загружает изображение и создает экземпляр Surface, на котором отображено это изображение. В load() передается имя файла. «Родным» форматом является BMP, однако если функция pygame.image.get_extended() возвращает истину, то можно загружать ряд других форматов: PNG, GIF, JPG и др.
import pygame as pg import sys W = 400 H = 300 sc = pg.display.set_mode((W, H)) sc.fill((100, 150, 200)) dog_surf = pg.image.load('dog.bmp') dog_rect = dog_surf.get_rect( bottomright=(W, H)) sc.blit(dog_surf, dog_rect) pg.display.update() while 1: for i in pg.event.get(): if i.type == pg.QUIT: sys.exit() pg.time.delay(20)
Если у изображения нет прозрачного слоя, но он необходим, то следует воспользоваться методом set_colorkey() класса Surface:
dog_surf = pg.image.load('dog.bmp') dog_surf. set_colorkey((255, 255, 255))
Все пиксели, цвет которых совпадает с переданным в set_colorkey() значением, станут прозрачными.
У формата PNG с альфа-каналом (когда для точек можно настраивать степень прозрачности; обычно устанавливается полностью прозрачный фон) таких проблем нет:
sun_surf = pg.image.load('sun.png') sun_rect = sun_surf.get_rect() sc.blit(sun_surf, sun_rect)
Ко всем экземплярам Surface рекомендуется применять метод convert(), который, если не передавать аргументы, переводит формат кодирования пикселей поверхности в формат кодирования пикселей главной поверхности. При выполнении игры это ускоряет отрисовку поверхностей.
Если поверхность была создана на базе изображения с альфа-каналом, то вместо convert() надо использовать метод convert_alpha(), так как первый удаляет прозрачные пиксели (вместо них будет черный цвет). Таким образом, код загрузки и обработки изображений разных форматов должен выглядеть примерно так:
dog_surf = pg. image.load( 'dog.bmp').convert() sun_surf = pg.image.load( 'sun.png').convert_alpha()
Что по смыслу равносильно:
... dog_surf = pg.image.load('dog.bmp') dog_surf = dog_surf.convert() ...
Метод convert() возвращает новую, конвертированную, поверхность. Он не изменяет ту, к которой применяется.
В модуле pygame.image есть функция save(), которая позволяет сохранять переданную ей поверхность (не обязательно главную) в формат BMP, TGA, PNG, JPEG. Пример:
while 1: for i in pygame.event.get(): if i.type == pygame.QUIT: sys.exit() elif i.type == pygame.KEYUP \ and i.key == pygame.K_s: pygame.image.save(sc, 'day.png') pygame.time.delay(20)
Изменение поверхностей
Модуль pygame.transform содержит функции для изменения поверхностей. Некоторые трансформации (например, изменение размера) приводят к ухудшению изображения из-за потери части пикселей. В таких случаях надо сохранять исходную поверхность и выполнять трансформации от нее.
Функции модуля transform, которые изменяют поверхности, возвращают новые. Первым аргументом им передается исходный Surface. Ниже приведены примеры использования наиболее востребованных функций.
Функция flip() переворачивает Surface по горизонтали и вертикали, к потери качества не приводит. Указывается поверхность и булевыми значениями оси переворота.
import pygame import sys sc = pygame.display.set_mode((400, 300)) sc.fill((100, 150, 200)) dog_surf = pygame.image.load( 'dog.bmp').convert() dog_surf.set_colorkey( (255, 255, 255)) dog_rect = dog_surf.get_rect( center=(200, 150)) sc.blit(dog_surf, dog_rect) pygame.display.update() while 1: for i in pygame.event.get(): if i.type == pygame.QUIT: sys.exit() elif i.type == pygame.KEYUP \ and i.key == pygame.K_f: # собака перевернется # слева направо flip = pygame.transform.flip( dog_surf, True, False) sc.fill((100, 150, 200)) sc.blit(flip, dog_rect) pygame.display.update(dog_rect) pygame.time.delay(20)
Поворот и изменение размера:
import pygame import sys sc = pygame.display.set_mode((400, 300)) sc.fill((100, 150, 200)) dog_surf = pygame.image.load( 'dog.bmp').convert() dog_surf.set_colorkey( (255, 255, 255)) dog_rect = dog_surf.get_rect( center=(200, 150)) sc.blit(dog_surf, dog_rect) pygame.display.update() # ждем 1 секунду перед изменением pygame.time.wait(1000) sc.fill((100, 150, 200)) # уменьшаем в два раза scale = pygame.transform.scale( dog_surf, (dog_surf.get_width() // 2, dog_surf.get_height() // 2)) scale_rect = scale.get_rect( center=(200, 150)) sc.blit(scale, scale_rect) pygame.display.update(dog_rect) pygame.time.wait(1000) sc.fill((100, 150, 200)) # поворачиваем на 45 градусов rot = pygame.transform.rotate( dog_surf, 45) rot_rect = rot.get_rect( center=(200, 150)) sc.blit(rot, rot_rect) pygame.display.update() while 1: for i in pygame.event.get(): if i.type == pygame.QUIT: sys.exit() pygame.time.delay(20)
Практическая работа
Допустим, у вас есть такое изображение вида сверху машины:
Напишите программу управления ее движением с помощью стрелок клавиатуры (вверх, вниз, влево, вправо) так, чтобы объект всегда двигался головой вперед.
Курс с
pdf-версия, android-приложение
Можно ли как-то сделать картинку меню на весь экран? | BLASTHACK
- #1
Установил картинку в меню, но она только в углу как и дефолтная. Можно как-то на весь экран сделать?
Сортировка по дате Сортировка по голосам
- #2
скриин
Позитивный голос 0 Негативный голос
- #3
можно, в установщике CLEO 4. 1 или SannyBuilder (не помню точно), раньше шел .cleo плагин, который так делает
Позитивный голос 0 Негативный голос
- #4
NorrtH написал(а):
скриин
Нажмите для раскрытия…
Позитивный голос 0 Негативный голос
-
- #5
Pipirka написал(а):
Установил картинку в меню, но она только в углу как и дефолтная. Можно как-то на весь экран сделать?
Нажмите для раскрытия…
Позитивный голос 0 Негативный голос
Войдите или зарегистрируйтесь для ответа.
SF Plugin CP не в ЛС!
- SR_team
- Читы 4 5 6
- Ответы
- 88
- Просмотры
- 16K
Читы
lalka9110
Гайд Web-интерфейс для Python
- Mamashin
- Python
- Ответы
- 7
- Просмотры
- 6K
Python
Mamashin
Lua CarPrinter — Любые простые картинки из машин.
- MrCreepTon
- Читы
- Ответы
- 12
- Просмотры
- 3K
Читы
Carfentanil
Lua ScoreBoard 2.0
- 4el0ve4ik
- Модификации 2
- Ответы
- 20
- Просмотры
- 13K
Модификации
4el0ve4ik
Lua VehicleTools
- Bredd Lane
- Читы 4 5 6
- Ответы
- 82
- Просмотры
- 37K
Читы
CodySss
Поделиться:
Поделиться Ссылка
CSS Сделать фоновое изображение полноэкранным
Узнайте, как установить изображение любого размера в качестве фона полноэкранного HTML-элемента в CSS!
- Создать элемент Div
- Сделать Div на весь экран
- Добавить фоновое изображение
- Настройка размера фонового изображения
- Позиция Фоновое изображение
Создайте элемент контейнера Div
Создайте div или любой HTML-элемент блочного уровня с именем класса . bg-container , куда я собираюсь добавить фоновое изображение.
<дел>
Сделайте Container Div полноэкранным
Затем сделайте div полноэкранным, чтобы фоновое изображение помещалось на весь экран окна браузера.
Примечание. Вы можете изменить размер элемента div-контейнера, если не хотите, чтобы изображение занимало весь экран, поскольку фоновое изображение будет видно только в зависимости от размера элемента div-контейнера.
Есть несколько способов сделать div полноэкранным, но на этот раз я собираюсь использовать свойство CSS height:100% .
Это двухэтапный процесс.
Шаг 1. Добавьте пару свойств CSS в селекторы html и body . Установка поля на 0 избавит от любого пробела вокруг окна браузера и установит высоту на 100% .
HTML, тело { маржа: 0; высота:100%; }Войти в полноэкранный режимВыйти из полноэкранного режима
Шаг 2. Добавьте три свойства в селектор .bg-container .
.bg-контейнер { ширина:100%; высота:100%; граница: 5px сплошной красный; }Войти в полноэкранный режимВыйти из полноэкранного режима
Я явно установил ширину на 100%, но это не обязательно, потому что div является блочным элементом и его ширина по умолчанию растягивается до ширины родительского элемента, в данном случае body .
Затем установите height:100% , который растянет высоту .bg-контейнера до нижнего края области просмотра браузера. Чтобы высота работала, убедитесь, что вы добавили height:100% в селектор html и body выше, иначе это не сработает.
Чтобы увидеть, что .bg-container , добавьте рамку шириной 5px , сплошным стилем и цветом red .
На данном этапе у меня возникла проблема: справа и снизу появляются полосы прокрутки, скрывающие красную рамку.
Давайте это исправим.
Чтобы скрыть полосу прокрутки, добавьте overflow: hidden к селекторам html и body CSS.
HTML, тело { маржа: 0; высота:100%; переполнение: скрыто; }Войти в полноэкранный режимВыйти из полноэкранного режима
Как видно из рисунка ниже, полоса прокрутки исчезла, но границы внизу и справа по-прежнему скрыты.
Это связано с тем, что когда вы задаете границу элементу, который уже имеет ширину 100%, граница будет добавлена к контейнеру в дополнение к ширине 100% как слева, так и справа. Вот почему граница справа и снизу вышла за пределы окна просмотра браузера.
Чтобы вернуть границу, другими словами, включить границу в пределах ширины 100%, все, что мне нужно, это добавить свойство CSS box-sizing:border-box к . bg-container .
.bg-контейнер { ширина:100%; высота:100%; граница: 5px сплошной красный; box-sizing:border-box; }Войти в полноэкранный режимВыйти из полноэкранного режима
Таким образом, я знаю, что если я добавлю изображение в качестве фонового изображения в этот контейнер, оно будет видно на весь экран.
Рекомендуется
Дизайн классной регистрационной формы с использованием HTML и CSS
Добавить фоновое изображение на весь экран
Добавим фоновое изображение в .bg-контейнер.
Для этого все, что мне нужно сделать, это добавить свойство CSS background-image в .bg-container с путем URL-адреса изображения, который обычно будет расположением изображения в папке вашего проекта или URL-адресом любого веб-изображения.
Продолжить чтение…
Полноэкранное фоновое изображение с CSS
Канишком Куналом
Многие современные веб-дизайны начали использовать большое фоновое изображение, которое покрывает всю ширину и высоту окна браузера. Содержимое веб-сайта размещается поверх этого полноэкранного фонового изображения. Фоновое изображение остается фиксированным в своем положении при прокрутке пользователем, а также является адаптивным, поэтому подходит для просмотра на устройствах всех размеров.
Нажмите на изображение для демонстрации полноэкранного фона ИзображениеВ этом посте я покажу, как мы можем легко разместить такие полноэкранные фоновые изображения на веб-сайтах с помощью CSS3. Этот пример кода должен работать во всех современных браузерах, поддерживающих CSS3 (IE9+, Chrome, Safari, Opera 10+ и Firefox 3.6+)
Код CSS для полноэкранного фонового изображения
Полноэкранное фоновое изображение обычно размещается как фон
свойство тега html
или body
. Ниже мы добавили код CSS в тег body
для установки полноэкранного фонового изображения.
тело { фон: url(new-york-background.jpg) фиксированный центр без повторов; -webkit-background-size: обложка; -moz-background-size: обложка; -o-background-size: обложка; размер фона: обложка; }
Обратите внимание на использование свойства background-size
, которое присутствует в CSS3, и, установив для этого свойства значение cover
, мы просим браузер использовать фоновое изображение для покрытия всей ширины и высоты окна браузера.
Мы также попросили браузер удерживать фоновое изображение в центре и фиксировать его положение. Благодаря этому, когда пользователь прокручивает страницу, фоновое изображение остается на своем месте. И когда пользователь изменяет размер окна браузера или просматривает его на устройстве с разными размерами, фоновое изображение автоматически растягивается или обрезается, чтобы покрыть всю ширину и высоту окна браузера.
Демонстрация полноэкранного фонового изображения
Как видите, довольно легко установить изображение в качестве полноэкранного фонового изображения, и оно хорошо работает с адаптивным веб-дизайном. Вы можете просмотреть демо-версию, а также полный код на CodePen, используя один из следующих вариантов:
Полная демо-версия Полный код
Или поиграть со встроенным кодом CodePen ниже:
См. Полноэкранное фоновое изображение пера от Канишка Кунала на CodePen.0
Поддержка старых браузеров
Хотя то, что мы сделали, было довольно коротким и приятным, но некоторые из вас могут захотеть, чтобы это работало и в старых браузерах. Не существует единого решения, подходящего для всех браузеров, однако вы можете ознакомиться с различными методами, предлагаемыми на CSS-Tricks, некоторые из которых также включают использование JavaScript.
Кредит на использование фонового изображения
Фоновое изображение, использованное в приведенной выше демонстрации, было взято с Pixabay и имеет лицензию CC0, т.