【发布时间】:2013-09-04 23:38:26
【问题描述】:
我正在使用 Pygame 在 Python 中制作一个程序,该程序会将图像加载到屏幕上,打开原始数据(例如,如果您将 jpg 作为文本文件打开时会看到的字符),抛出一些随机字符与数据一起,然后将其重新保存为 jpg 以再次加载到 pygame 中。这会产生一个看起来很酷的故障效果。
我对 desired 故障没有任何问题,但我发现尽管放置了什么样的随机字符,对于某些图像,每次图像通过我的故障功能时,我都会结束在图像底部有一个灰色条。我简化了我的函数,它所做的只是加载图像,将图像作为读取二进制文件打开(即使我在 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 到字符串的转换中删除了一些奇怪的字符(或可能是空格),反之亦然。我确实比较了两个文本文件(一个带有灰色条,一个没有),发现在使用在线“差异查找器”时没有区别。
这是我在这里的第一篇文章,但我已经潜伏了几十次。非常感谢任何帮助。
【问题讨论】:
标签: python image jpeg pygame corruption