moar customization, sillier example

This commit is contained in:
tcsenpai 2024-07-21 05:03:56 +02:00
parent 0f58e14391
commit 2a588025d7
3 changed files with 10 additions and 6 deletions

View File

@ -1,11 +1,11 @@
import qraro import qraro
with open("input_test_file.txt", "rb") as f: with open("pika.webp", "rb") as f:
data = f.read() data = f.read()
qraro.bin_to_qr(data, chunk_size=50) qraro.bin_to_qr(data, chunk_size=100, box_size=10, border=4)
test_file = qraro.qr_to_bin() test_file = qraro.qr_to_bin()
with open("output_test_file.txt", "wb") as f: with open("pika_out.webp", "wb") as f:
f.write(test_file) f.write(test_file)

BIN
pika.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

View File

@ -2,18 +2,19 @@ import qrcode
from PIL import Image from PIL import Image
import zxing import zxing
def bin_to_qr(data, chunk_size=100, filename_prefix="qr_code"): def bin_to_qr(data, chunk_size=100, filename_prefix="qr_code", box_size=10, border=4):
hex_data = data.hex() hex_data = data.hex()
chunks = [hex_data[i:i+chunk_size] for i in range(0, len(hex_data), chunk_size)] chunks = [hex_data[i:i+chunk_size] for i in range(0, len(hex_data), chunk_size)]
total_chunks = len(chunks) total_chunks = len(chunks)
for i, chunk in enumerate(chunks, 1): for i, chunk in enumerate(chunks, 1):
qr = qrcode.QRCode(version=None, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=10, border=4) qr = qrcode.QRCode(version=None, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=box_size, border=border)
qr.add_data(f"{i}/{total_chunks}:{chunk}") qr.add_data(f"{i}/{total_chunks}:{chunk}")
qr.make(fit=True) qr.make(fit=True)
print(f"Generating QR code {i}", end="")
img = qr.make_image(fill_color="black", back_color="white") img = qr.make_image(fill_color="black", back_color="white")
img.save(f"{filename_prefix}_{i}.png") img.save(f"{filename_prefix}_{i}.png")
print(f"[OK]")
print(f"Generated {total_chunks} QR codes.") print(f"Generated {total_chunks} QR codes.")
@ -25,7 +26,9 @@ def qr_to_bin(filename_prefix="qr_code"):
while True: while True:
try: try:
filename = f"{filename_prefix}_{i}.png" filename = f"{filename_prefix}_{i}.png"
print(f"Decoding QR code {i}...", end="")
barcode = reader.decode(filename) barcode = reader.decode(filename)
print(f"decoded...", end="")
if barcode and barcode.parsed: if barcode and barcode.parsed:
decoded = barcode.parsed decoded = barcode.parsed
chunk_info, chunk_data = decoded.split(':', 1) chunk_info, chunk_data = decoded.split(':', 1)
@ -34,6 +37,7 @@ def qr_to_bin(filename_prefix="qr_code"):
if chunk_num == total_chunks: if chunk_num == total_chunks:
break break
i += 1 i += 1
print(f"binary data extracted [OK]")
except FileNotFoundError: except FileNotFoundError:
break break
except Exception as e: except Exception as e: