0

我是新来的,所以希望这是提出这个问题的正确方法。我制作了一个 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()
4

0 回答 0