Pygame: избавление от странного эффекта градиента на отображаемом изображении

1

Привет, коллеги-программисты,

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

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

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

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

    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 - обложка игры, я совмещал ее так же, как и во втором захвате.

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

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

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

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

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

  • 0
    Попробуйте вызвать convert() на обеих поверхностях после загрузки: backgroundPicture = pygame.image.load(backgroundFile).convert() и picture = pygame.image.load(file).convert()
  • 0
    Привет ленивец Я попробовал это, как я видел это в другом вопросе, но это не решило проблему
Теги:
image
pygame
graphics

1 ответ

1

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

Не так много вещей, которые вы можете сделать по этому поводу. Ваши варианты в основном:

  • перейти к 16-разрядной настройке вместо 8-бит, если pygame может это сделать, или
  • добавьте небольшое количество случайного шума или сглаживание, чтобы разбить его.
  • 0
    Здравствуйте, спасибо за ваше объяснение. Только один вопрос: «перейти на 16-битную настройку вместо 8-битной, если Pygame может сделать это», как я могу это сделать? Также по этой ссылке кажется, что по умолчанию для кадрового буфера Raspberry Pi уже 16 бит. Могу ли я что-нибудь сделать на стороне изображения? Еще одна забавная вещь в Gimp - гистограмма изображения говорит о том, что существует только 256 цветов (хотя, возможно, для каждого RGB)? так далеко меньше 16 бит?
  • 0
    Я не могу получить файл PNG из zippyfile , чтобы посмотреть на него, потому что он дает мне JPEG. Можете ли вы добавить изображения в ваш вопрос напрямую, пожалуйста, у вас должно быть несколько очков ...
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню