我在显示器上全屏显示一系列图像,其原始分辨率为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()
答案 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版本和操作系统的正确版本吗?