资源简介
信息隐藏作业。使用python实现幻方置乱,里面的幻方函数生成是从借鉴的别人的,压缩包的内容是PYcharm的工程文件。其中,TPYCL.py是运行的程序,里面的幻方生成为奇数,若想要奇偶均可,可以使用里面另外一个幻方生成.py文件进行替换。注意,里面的a.jpg不能太大,不然耗时会特别长;TPYCL.py里面对图片仅进行了20次置乱,你可以随意更改。置乱n²次后,图片恢复到原来的状态。
代码片段和文件信息
#!/usr/bin/python3
from PIL import Image
import numpy as np
import numpy
import time
import math
#列表循环向左移offset位
def shift_left(lst offset):
return [lst[(i+offset)%len(lst)] for i in range(len(lst))]
#列表循环向右移offset位
def shift_right(lst offset):
return [lst[i-offset] for i in range(len(lst))]
#构造奇数阶幻方函数
def magic_of_odd_order(n):
p = (int)((n-1)/2)
#创建矩阵1
initial_lst1 = list(range(p+1n))+list(range(p+1))
initial_mat1 = []
for i in range(n):
initial_mat1.append(shift_left(initial_lst1 i))
mat1 = np.array(initial_mat1)
#创建矩阵2
initial_lst2 = list(range(p-1-1))+list(range(2*pp-1))
initial_mat2 = []
for i in range(n):
initial_mat2.append(shift_right(initial_lst2 i))
mat2 = np.array(initial_mat2)
#创建矩阵3即元素全为1的矩阵
mat3= np.ones((nn)dtype=np.int)
#构造幻方
magic = n*mat2+mat1+mat3
return magic
#主函数
def main():
a = Image.open(“a.jpg“) # 打开图像
b = numpy.array(a) # 图片转数组
print(b) # 输出图片数组
image_shape = [] # 定义一个list
image_shape = b.shape # 将图片像素大小传入list中
print(image_shape[1]) # 测试,输出图片的宽度
print(b.shape) # 测试,输出图片的大小(3753753)
c = Image.fromarray(b) # 数组转图片
c.show() # 显示图片
order = image_shape[1]
if order%2 ==1:
magic = magic_of_odd_order(order)
else:
print(“图片不合法!“)
for row in magic: #在magic的每行循环
for col in row:#在每行中循环输出每个元素
print(col end=‘\t‘)
print()
#开始置换幻方矩阵和图片矩阵(一次)
for change_num in range(020):
for i in range(0image_shape[0]):
for j in range(0image_shape[0]):
# 判断magic[i][j]是否为幻方矩阵的最大值,如果是最大值,则将其置为1,将等于1的那一位置为0
if magic[i][j] == math.pow(image_shape[0]2):
for i_ in range(0 image_shape[0] 2):
for j_ in range(0 image_shape[0] 2):
if magic[i_][j_] == 1 :
t = magic[i][j]
magic[i][j] = magic[i_][j_]
magic[i_][j_] = t
#交换图片数组中对应的元素
temp_ = b[i][j]
b[i][j] = b[i_][j_]
b[i_][j_] = temp_
else:
for i_ in range(0 image_shape[0] 2):
for j_ in range(0 image_shape[0] 2):
if magic[i_][j_] == (magic[i][j] - 1) :
t = magic[i][j]
magic[i][j] = magic[i_][j_]
magic[i_][j_] = t
# 交换图片数组中对应的元素
temp = b[i][j]
b[i][j] = b[i_][j_]
b[i_][j_] = temp
c = Image.fromarray(b) # 数组转图片
c.show() # 显示图片
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-05-23 16:29 .idea\
文件 213 2018-05-12 10:41 .idea\misc.xm
文件 282 2018-05-12 10:41 .idea\modules.xm
文件 24855 2018-05-23 16:29 .idea\workspace.xm
文件 398 2018-05-12 10:41 .idea\鍥剧墖棰勫鐞?iml
文件 6300 2018-05-23 15:47 a.jpg
文件 7 2018-05-11 15:54 cmd.cmd
文件 3452 2018-05-23 15:42 TPYCL.py
文件 3216 2018-05-11 16:10 骞绘柟鏁扮粍鐨勭敓鎴?py
- 上一篇:train_loss_acc.py
- 下一篇:Python标准库源代码.zip
评论
共有 条评论