python - pygame : Getting rid of strange gradient effect on displayed image

标签 python image graphics pygame

各位程序员大家好,

我编写了一个小 python 程序,用于在逆绘图发行版上启动随机游戏,并且在启动游戏之前使用 pygame 显示游戏的图像

我使用背景,我的问题是背景图像很干净,但是当显示它以及它上面的游戏封面时,它会出现奇怪的难看的渐变效果,正如您所看到的:/image/WaFV4.jpg

它主要出现在角落,盖子本身完全不受影响。

这是我的 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 是游戏的封面,我将它们组合起来,就像第二次捕获中出现的那样。

所以主要是我对显示、图像、图形库等等知之甚少。 我认为这可能与图像的透明度或 alpha 层或压缩格式有关,但我对此一无所知。 该代码是在带有linux发行版的树莓派上启动的,对此不太了解。

同样奇怪的是,我的一位用户说奇怪的渐变效果似乎在脚本启动十次左右后就消失了,但我无法重现这一点。

那么我缺少什么来消除这种丑陋的效果呢?

这里是背景图片,如果它的特征可能与问题有关: background.png

感谢您的帮助!

最佳答案

您看到的效果称为“ strip ”,请参阅 Wikipedia article 。这是由于没有足够的位深度来表示精细的颜色渐变而引起的,并且在大的无纹理区域中最为明显。

对此你无能为力。您的选择基本上是:

  • 转到 16 位设置而不是 8 位(如果 pygame 可以做到这一点),或者
  • 添加少量随机噪音,或通过抖动来分解噪音。

关于python - pygame : Getting rid of strange gradient effect on displayed image,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52414478/

相关文章:

python - Pandas - 解析带和不带毫秒的时间数据

java - 在 GUI 中创建不同图像的多个实例

r - 粘贴是绘图数学表达式中的特殊参数吗?

html - 如何使用Base64编码图片作为img标签的来源?

php - 生成此图形填充的算法的名称是什么

c++ - C++ 图形库的内部工作原理

Python - 验证货币

python - 在 Pandas 分组后绘制多个时间序列

python - YOLOv4注释将维度保存在[0,1]浮点区间中

javascript - 在背景颜色功能下添加背景图像