微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将位串 crc 添加到图像

如何解决将位串 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 举报,一经查实,本站将立刻删除。