如何解决将位串 crc 添加到图像
我已使用以下程序将 png 图像转换为基本的 2 位序列
from io import BytesIO
from PIL import Image
//CRC PROCESS OF DATA BIT OF IMAGE
def xor(a,b) :
hasil = []
for i in range(1,len(b)) :
if a[i] == b[i] :
hasil.append('0')
else :
hasil.append('1')
return ''.join(hasil)
def mod2div(hasilbagi,pembagi) :
pick = len(pembagi)
tmp = hasilbagi[0:pick]
while pick <len(hasilbagi) :
if tmp[0]=='1':
tmp = xor(pembagi,tmp) + hasilbagi[pick]
else :
tmp = xor('0'*pick,tmp) + hasilbagi[pick]
pick +=1
if tmp[0] == '1':
tmp = xor(pembagi,tmp)
else :
tmp = xor('0'*pick,tmp)
checkword = tmp
return checkword
def encodeData(data,key) :
panjang=len(key)
# Appends n-1 zeroes at end of data
appended_data = data + '0'*(panjang-1)
remainder = mod2div(appended_data,key)
# Append remainder in the original data
codeword = data + remainder
return codeword
//END CRC PROCESS FUNCTION
out = BytesIO()
with Image.open("download.png") as img:
img.save(out,format="png")
inbytes = out.getvalue()
biner = "".join([format(n,'08b') for n in inbytes])
#print(tobit)
w = open("temp","w")
w.write(biner)
#a = open("temp","r")
b = open("send","w")
inputkey = input("Enter Key : ")
#biner = tobit#a.read()
key = inputkey
data_crc = encodeData(biner,key)
b.write(data_crc)
print(len(data_crc))
#convert to image again
#f = open("send","r")
#biner = f.read()
# #Code to Convert image
decoded_b2 = [int(data_crc[i:i + 8],2) for i in range(0,len(data_crc),8)]
with open('FIXSEND','wb') as f:
f.write(bytes(decoded_b2))
再次转换为图像后可以使用,但是当我再次将其解压缩为一系列位时,之前添加的8位CRC无法读取并转换为图像的一部分。谁能帮我找到解决方案? 我希望对我完成最后的学校作业有所帮助
感谢您的帮助
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。