PyGame降低了图像加载时的图像质量

时间:2012-10-16 11:57:13

标签: image pygame

我在显示器上全屏显示一系列图像,其原始分辨率为1280x720。需要显示的图像为1280x720px,以确保它们不需要转换。图像质量很高。

当我将图像blit到表面时,它会以正确的尺寸显示图像,填满屏幕。就像我预期的那样。

但是,显示的图像似乎是压缩的。压缩看起来像约80/100的jpeg压缩。这似乎相当不错,但这会导致问题显示在显示屏上清晰显示。下面的代码就是我现在拥有的代码。 PyGame文档并没有真正显示任何质量设置,所以我希望我不必转向另一种方式去做,尽管那样会很好......

pygame.display.set_mode((1280, 720))
# move mouse pointer off of the screen
pygame.mouse.set_pos((1280, 720))   
pygame.display.update()

# Get the image from disk (with or without convert() shows same result)
picture = pygame.image.load(image).convert()

# smoothscale suggested on stack overflow, but shows no difference.
picture = pygame.transform.smoothscale(picture, (1280, 720))

# Get the screen surface to display an image on and blit
main_surface = pygame.display.get_surface()
main_surface.blit(picture, (0, 0))
pygame.display.update()

2 个答案:

答案 0 :(得分:0)

我无法从代码中看出实际的图像文件类型是什么。当我在Pygame中得到无法解释的输出时,我会首先尝试以下内容:

1)从命令行运行游戏而不是shell(F5)。 shell从Tkinter运行,它有自己的无限循环,可能会在程序中造成不必要的后果。

2)双击打开目录。

2)尝试在Photoshop中更改图像文件类型。我通常使用.png或jpeg。根据你使用的是另一个。

3)在Photoshop中使用“另存为网络”手动缩小文件大小,看看是否有帮助。

4)使用另一张照片检查是否所有照片都发生了这种情况。

我之所以建议的原因是我会使用非常相似的代码,所以会寻找替代解决方案。我相信Pygame中的功能不应该被责备,因为他们会被论坛上的现有用户报告?< / p>

答案 1 :(得分:0)

我已经重写了代码以简化:

 #pygame code to render an image
 import pygame, os
 image = 'solution.jpg'  #located in same folder as this file:resized in Photoshop 
 pygame.init()  #I assume you did this?
 SCREEN = pygame.display.set_mode((1280, 720))
 pygame.mouse.set_pos((1280, 720))
 picture = pygame.image.load(image)
 SCREEN.blit(picture,(0,0))
 pygame.display.update()enter code here

这很好用:

1)我只有一个pygame更新而不是两个;我不使用get_surface()方法;我为表面创建了一个名为screen的变量。

2)也许尝试.png而不是.jpeg?

3)另一个想法是:图片重新调整为1280,720并且在Photoshop中看起来像你预期的那样?

4)试验文件类型

JPG
PNG
GIF (non animated)
BMP
PCX
TGA (uncompressed)
TIF
LBM (and PBM)
PBM (and PGM, PPM)
XPM

支持以上所有

我已经用照片测试了上面的代码,在Photoshop中重新调整了大小,并且没有任何问题。如果其他方法都失败了,请检查最新的Pygame版本和操作系统的正确版本吗?