我是新来的,所以希望这是提出这个问题的正确方法。我制作了一个 python 脚本,它读取一个文件(使用 binascii 模块),然后用另一个文件中的随机行替换行。然后将结果保存为新文件。我们的想法是以这种方式制作故障艺术。但是,如果我在两个 PNG 上运行这个脚本,我会得到一个大部分是黑色的图像,顶部只有一些彩色像素。如果我使用十六进制编辑器并替换随机行,我会得到一个更加错误的结果。我不明白为什么我的代码不这样做。这是我使用的代码希望可以这样发布。任何帮助将不胜感激,谢谢!
import sys
import binascii
import random
import os
def main():
def glitch(n):
for i in range(len(content_f3)):
if i > header_length:
if i % n == 0:
content_f3[i] = random.choice(content_f2)
def repeatGlitch(l):
for i in l:
glitch(int(i))
def saveResult():
for i in content_f3:
f3.write(binascii.unhexlify(i))
# setup
header_length = 35
f1 = open(sys.argv[1], 'rb')
f2 = open(sys.argv[2], 'rb')
f3_fileName, f3_extension = os.path.splitext(sys.argv[1])
resultFilename = f3_fileName + '_glitched' + f3_extension
f3 = open(resultFilename, 'wb')
content_f1 = [binascii.hexlify(i) for i in f1]
content_f2 = [binascii.hexlify(i) for i in f2]
content_f3 = [i for i in content_f1]
# glitch!
r = sys.argv[3:]
repeatGlitch(r)
saveResult()
print("finshed!")
# close all the files
f1.close()
f2.close()
f3.close()
if __name__ == '__main__':
main()