Привет, коллеги-программисты,
Я написал небольшую программу 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, не знаю об этом больше.
Также странно, один из моих пользователей сказал, что странный эффект градиента, кажется, исчезает после десяти или около того запусков сценария, но я не мог воспроизвести это.
Так чего же мне не хватает, чтобы избавиться от этого уродливого эффекта?
Вот здесь фоновое изображение, если его характеристика может быть связана с проблемой:
Спасибо за помощь !
Эффект, который вы видите, называется "группировка", см. Статью в Википедии. Это вызвано тем, что не имеет достаточной битовой глубины для представления тонких градаций цвета и наиболее заметна в больших, нетекстурированных областях.
Не так много вещей, которые вы можете сделать по этому поводу. Ваши варианты в основном:
zippyfile
, чтобы посмотреть на него, потому что он дает мне JPEG. Можете ли вы добавить изображения в ваш вопрос напрямую, пожалуйста, у вас должно быть несколько очков ...
convert()
на обеих поверхностях после загрузки:backgroundPicture = pygame.image.load(backgroundFile).convert()
иpicture = pygame.image.load(file).convert()