어떤 인코딩 방식으로 이진 데이터에 대해 영상화하다

14505 단어 Python
2/4 기호를 조정하여 특정 영역에서 사용하는 인코딩 방식.에서 생성된 바이너리 덤프 텍스트 파일을 이미지화합니다. 이 인코딩 방식에서는 이미지의 1과 0의 값이 항상 동일합니다. 자세한 내용은 설명되지 않습니다.
genpage.py
import sys
import numpy as np
import math
from PIL import Image

np.set_printoptions(edgeitems=10)

argv = sys.argv
argc = len(argv)

if argc == 4:
    pix = int(argv[3])
else:
    pix = 1024

binary = ''
with open(argv[1], 'rb') as inf:
    binary = inf.readline()
binary_str = str(binary.decode()) + "00000000"

page_max_bits = int((pix*pix)/2)
data_bits = len(binary_str)
data_bytes = int(data_bits / 8)
page_num = math.ceil(len(binary_str) / page_max_bits)
total_max_bits = page_num * page_max_bits

over_bits = total_max_bits - data_bits
over_bytes = int(over_bits / 8)

print("ページサイズ:{0}x{0}".format(pix))
print("使用ページ数:{}".format(page_num))
print("ページ保存可能ビット:{}".format(page_max_bits))
print("合計保存可能ビット:{}".format(total_max_bits))
print("保存データビット:{}".format(data_bits))
print("保存データバイト:{}".format(data_bytes))
print("余剰ビット:{}".format(over_bits))
print("余剰バイト:{}".format(over_bytes))
print()
print("生成開始")

for i in range(over_bytes):
    if i % 2 == 0:
        binary_str += "11101100"
    elif i % 2 == 1:
        binary_str += "00010001"

page_arrays = np.zeros((page_num, pix, pix))

#print(binary_str[:100])

count = 0
for page in range(page_num):
    page_point = page*page_max_bits
    page_binary = binary_str[page_point:]
    for py in range(int(pix / 2)):
        for px in range(int(pix / 2)):
            pix_point = px
            # print(binary_str[count*2:(count*2)+2])
            if binary_str[count*2:(count*2)+2] == '00':
                page_arrays[page][py*2][px*2+1] = 255
            elif binary_str[count*2:(count*2)+2] == '01':
                page_arrays[page][py*2][px*2] = 255
            elif binary_str[count*2:(count*2)+2] == '10':
                page_arrays[page][py*2+1][px*2+1] = 255
            elif binary_str[count*2:(count*2)+2] == '11':
                page_arrays[page][py*2+1][px*2] = 255
            count += 1

for page in range(page_num):
    Image.fromarray(page_arrays[page]).convert("L").save("{0}{1}.png".format(argv[2], page))

시용하다


여기.
↑ 이 그림을 글에서 언급한 2진법 저장 보도에 따라 저장합니다.
뒤집어 보다.이것은 위의 절차다.간단하게 말하면 첫 번째 이진 저장 파일을 바탕으로 두 번째 텍스트에 건네주는 것을 바탕으로 정사각형 이미지를 만들고 세 번째 픽셀 수를 하나의 변으로 삼는다.
그럴 거야.

이 파일




납품된 픽셀이 증가하면 생성된 장수가 감소합니다.

감상


그게 다야.

좋은 웹페이지 즐겨찾기