如何重新排列像素

6 投票
2 回答
3604 浏览
提问于 2025-04-17 14:07

我在谷歌上搜索过,但没找到相关的信息。

我想写一个Python脚本,可以导入一张图片,改变图片中像素的顺序,然后保存成一张新的图片。

我对Python很熟悉,但只用过里面自带的库。所以如果需要用到新的命令,请尽量详细说明。

2 个回答

-1

你可以去找一下PIL这个库,点击这里可以查看:链接

14
import sys
import random
from PIL import Image

BLOCKLEN = 64 # Adjust and be careful here.

img = Image.open(sys.argv[1])
width, height = img.size

xblock = width / BLOCKLEN
yblock = height / BLOCKLEN
blockmap = [(xb*BLOCKLEN, yb*BLOCKLEN, (xb+1)*BLOCKLEN, (yb+1)*BLOCKLEN)
        for xb in xrange(xblock) for yb in xrange(yblock)]

shuffle = list(blockmap)
random.shuffle(shuffle)

result = Image.new(img.mode, (width, height))
for box, sbox in zip(blockmap, shuffle):
    c = img.crop(sbox)
    result.paste(c, box)
result.save(sys.argv[2])

下面是一些示例输入,分别是 BLOCKLEN = 1BLOCKLEN = 64BLOCKLEN = 128

这里输入图片描述 这里输入图片描述 这里输入图片描述 这里输入图片描述

撰写回答