2012-10-16 111 views
0

我在原始分辨率为1280x720的显示器上以全屏显示一系列图像。需要显示的图像是1280x720像素,以确保它们不需要转换。该图像是jpg高品质。PyGame在图像加载时降低图像质量

当我将图像闪烁到表面时,它会以正确的大小显示图像,填满屏幕。这正如我预料的那样。

但是,显示的图像似乎被压缩。压缩看起来像大约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() 
+0

正如你所说,图像已经是1280x720。如果删除刻度线会发生什么情况? 问题是,你看到比原始图像质量更低的pygame中的图像,不是吗? – pmoleri

+0

就像你可以在上面的评论中看到的那样,建议使用smoothscale,但没有区别或没有区别。 convert()也一样。 – Ruudt

+0

什么'bpp'是在?每像素 – ninMonkey

回答

0

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

1)从命令行运行游戏而不是shell(F5)。从Tkinter运行的shell有它自己的无限循环,并且会在你的程序中产生不希望的结果。

2)通过双击从目录运行你的程序。

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

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

4)使用其他图片来检查它是否发生在所有图片或只是这一张。

我建议上述的原因是我会使用非常相似的代码,所以会寻找替代解决方案。我相信Pygame中的函数不应该怪罪,因为他们已经被论坛上的用户报告了。

+0

我不确定问题出在哪里,但是我尝试了其他图像,它们有完全相同的问题(4)。 (3)(也许图像太大,200KB - 600KB?) (1)和(2)我无法尝试,因为这实际上并不是一个游戏。我被建议去看看我正在使用的pygame来解决查找另一种方法从命令行显示全屏图像的问题... – Ruudt

+0

如果删除第一个更新命令,会发生什么情况?你能链接到图片,以便我可以下载并尝试为你自己? –

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()方法;我为称为屏幕的表面创建了一个变量。

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版本和正确的操作系统?

相关问题