Initial commit
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
import PIL.Image as Image
|
||||
import PIL.ImageOps as ImageOps
|
||||
import struct
|
||||
import niimbotpacket
|
||||
import sys
|
||||
|
||||
if sys.version_info.minor >= 10:
|
||||
def countbitsofbytes(data):
|
||||
return int.from_bytes(data, 'big').bit_count()
|
||||
else:
|
||||
def countbitsofbytes(data):
|
||||
n = int.from_bytes(data, 'big')
|
||||
# https://stackoverflow.com/a/9830282
|
||||
n = (n & 0x55555555) + ((n & 0xAAAAAAAA) >> 1)
|
||||
n = (n & 0x33333333) + ((n & 0xCCCCCCCC) >> 2)
|
||||
n = (n & 0x0F0F0F0F) + ((n & 0xF0F0F0F0) >> 4)
|
||||
n = (n & 0x00FF00FF) + ((n & 0xFF00FF00) >> 8)
|
||||
n = (n & 0x0000FFFF) + ((n & 0xFFFF0000) >> 16)
|
||||
return n
|
||||
|
||||
def naive_encoder(img):
|
||||
img_data = ImageOps.invert(img.convert("L")).convert("1").tobytes()
|
||||
|
||||
for x in range(img.height):
|
||||
line_data = img_data[x*12:(x+1)*12]
|
||||
counts = ( countbitsofbytes(line_data[i*4:(i+1)*4]) for i in range(3) )
|
||||
header = struct.pack('>H3BB', x, *counts, 1)
|
||||
pkt = niimbotpacket.NiimbotPacket(0x85, header+line_data)
|
||||
yield pkt
|
||||
Reference in New Issue
Block a user