我正在使用 Pygame 在 Python 中制作一个程序,该程序会将图像加载到屏幕上,打开原始数据(例如,如果您将 jpg 作为文本文件打开,您会看到的字符),将一些随机字符放入数据,然后将其重新保存为 jpg 以再次加载到 pygame。这会产生一个看起来很酷的故障效果。
我对所需的故障没有任何问题,但我发现尽管放置了什么样的随机字符,对于某些图像,每次图像通过我的故障功能时,我最终都会在底部出现一个灰色条图片。我简化了我的函数,它所做的只是加载图像,将图像作为读取二进制文件打开(即使我在 Mac 上),保存原始数据字符串,根据该字符串编写一个新文件,然后加载该文件。该图像没有以任何方式故意出现故障,并且数据据说没有受到影响,但我仍然遇到了这个灰色条。
以下是相关代码:
def initializeScreen(x, y):
pygame.display.set_mode((x,y))
return pygame.display.get_surface()
def importImage(fileName):
imgText = open(fileName, 'rb')
imgTextStr = imgText.read()
imgText.close()
return imgTextStr
screenSurf = initializeScreen(800,600)
textOfImg = importImage('/Users/Amoeba/Desktop/GlitchDriving/Clouds.jpg')
newFile = open('/Users/Amoeba/Desktop/GlitchDriving/tempGlitchFile.jpg', 'wb')
newFile.write(textOfImg)
newimgSurf = pygame.image.load('/Users/Amoeba/Desktop/GlitchDriving/tempGlitchFile.jpg')
screenSurf.blit(newimgSurf, (0,0))
pygame.display.flip()
这是通过我的函数之前和之后的图像之一的示例:
值得注意的是,灰条的大小取决于图片。有些图片甚至通过我的功能明显没有改变,因为它们应该是。另外,如果我用预览之类的图像查看软件打开我的程序编写的新版本的jpg,灰色条不会出现。我怀疑这是 pygame 图像加载功能的一个怪癖,或者在我从 jpg 到字符串的转换中删除了一些奇怪的字符(或可能是空格),反之亦然。我确实比较了两个文本文件(一个带有灰色条,一个没有),在使用在线“差异查找器”时没有发现任何差异。
这是我在这里的第一篇文章,但我已经潜伏了几十次。任何帮助是极大的赞赏。