txlyre 7 maanden geleden
bovenliggende
commit
771734ed08
2 gewijzigde bestanden met toevoegingen van 9 en 18 verwijderingen
  1. 8 18
      main.py
  2. 1 0
      requirements.txt

+ 8 - 18
main.py

@@ -10,6 +10,7 @@ from itertools import groupby
 
 import cv2
 import requests
+import bitstring
 from loguru import logger
 from Crypto.Hash import BLAKE2b
 
@@ -86,17 +87,7 @@ def extract_image(path):
         for j in range(cols):
             r, g, b = im[i, j]
 
-            byte = 0
-            byte |= 1 << (r & 1)
-            byte |= 1 << ((r >> 1) & 1)
-            byte |= 1 << ((g >> 1) & 1)
-            byte |= 1 << ((g >> 1) & 1)
-            byte |= 1 << ((b >> 1) & 1)
-            byte |= 1 << ((b >> 1) & 1)
-            byte |= 1 << ((r >> 2) & 1)
-            byte |= 1 << ((r >> 2) & 1)
-
-            data.append(byte)
+            data.extend((r, g, b))
 
     return bytes(data)
 
@@ -136,18 +127,17 @@ def extract_lsbs(data):
     buffer = []
 
     data = [k for k, _ in groupby(data)]
-    data = chunks(data, 4)
+    data = chunks(data, 8)
         
     for chunk in data:
-        if len(chunk) != 4:
+        if len(chunk) != 8:
             break
 
-        tmp_byte = 0
-        for byte in chunk:
-            for n in range(2):
-                tmp_byte |= 1 << ((byte >> n) & 1)
+        ba = bitstring.BitArray(8)
+        for i, byte in zip(range(len(chunk)), chunk):
+            ba[i] = byte & 1
 
-        buffer.append(tmp_byte)
+        buffer.append(ba.u)
 
     return bytes(buffer)
 

+ 1 - 0
requirements.txt

@@ -1,4 +1,5 @@
 loguru
 requests
+bitstring
 pycryptodome
 opencv-python