Pygame: избавление от странного эффекта градиента на отображаемом изображении - PullRequest
0 голосов
/ 20 сентября 2018

Здравствуйте, коллеги-программисты,

Я написал небольшую программу на Python, которая используется для запуска случайных игр на ретроградационном дистрибутиве, и я использую pygame для отображения изображения игры перед ее запуском

Я использую фон, и моя проблема в том, что фоновое изображение чистое, но при отображении его и обложки игры поверх него оно появляется со странным уродливым градиентным эффектом, как вы можете видеть там: https://imgur.com/a/BnNdoqn

Он появляется в основном в углу, а сама обложка совершенно не затронута.

Вот мой код пигмея, отображающий оба изображения:

    log('showPic %s' %file)
    # INITS
    pygame.init()
    pygame.mouse.set_visible(0)
    backgroundPicture = pygame.image.load(backgroundFile)
    picture = pygame.image.load(file)
    # # CREATE FULLSCREEN DISPLAY. X = 1920- Y = 1080
    fullscreen = pygame.display.set_mode((1920,1080), FULLSCREEN)
    fullscreen.blit(backgroundPicture, (0,0))
    # # PASTE PICTURE ON FULLSCREEN
    x = (1920 - picture.get_width()) /2
    y = (1080 - picture.get_height()) /2
    fullscreen.blit(picture, (x,y))
    # # SHOW FULLSCREEN 
    pygame.display.flip()
    # # WAIT 5 SECONDS (need import time)
    time.sleep(5)
    # # EXIT PYGAME (Not needed but recommanded)
    pygame.display.quit()
    pygame.quit()

backgroundPicture - фоновое изображение, а pictureэто обложка игры, я тоже объединил ее, как во втором снимке.

Так что, в основном, я почти ничего не знаю об отображении, изображениях, графических библиотеках и тому подобном.Я думаю, что это может быть связано с прозрачностью или альфа-слоем или форматом сжатия изображения, но я также ничего об этом не знаю.Код запускается на Raspberry Pi с дистрибутивом Linux, не знаю больше об этом.

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

Так чего мне не хватает, чтобы избавиться от этого уродливого эффекта?

Вот фоновое изображение, если его характеристика может быть связана с проблемой: background.png

Спасибо за помощь!

1 Ответ

0 голосов
/ 20 сентября 2018

Эффект, который вы видите, называется "banding" , см. Статья в Википедии .Это вызвано отсутствием достаточной глубины в битах для представления тонких градаций цвета, и это наиболее заметно в больших, нетекстурированных областях.

Мало что можно с этим поделать.Ваши варианты в основном:

  • , чтобы перейти к 16-битной установке вместо 8-битной, если pygame может сделать это, или
  • добавить небольшойколичество случайного шума, или размывание, чтобы разбить его.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...