1

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

当我将图像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()
4

2 回答 2

0

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

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

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

2) 尝试在 Photoshop 中更改图像文件类型。我通常使用 .png 或 jpeg。取决于您使用的是哪个,请尝试另一个。

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

4)使用另一张图片检查它是否发生在所有图片或仅此一张。

我建议上述的原因是我会使用非常相似的代码,因此会寻找替代解决方案。我确信 Pygame 中的功能不应该受到指责,因为现在论坛上的用户会报告它们?

于 2012-10-23T08:57:50.157 回答
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 版本和正确的操作系统版本?

于 2012-10-26T16:19:52.280 回答