import os
import sys


def convertRGBtoHatB_red(r, g, b):
    if r > 128 or (g + b) > 255:
        return 1
    return 0


def convertRGBtoHatB_black(r, g, b):
    if r > 128 and (g + b) > 255:
        return 1
    elif r > 128:
        return 0
    return 1


def eightByteToBit(data, number):
    out_bytes = bytearray()
    for pos in range(int(number / 8)):
        value1 = data[pos * 8 + 0] << 7
        value2 = data[pos * 8 + 1] << 6
        value3 = data[pos * 8 + 2] << 5
        value4 = data[pos * 8 + 3] << 4
        value5 = data[pos * 8 + 4] << 3
        value6 = data[pos * 8 + 5] << 2
        value7 = data[pos * 8 + 6] << 1
        value8 = data[pos * 8 + 7]
        out_bytes.append(value1 | value2 | value3 | value4 | value5 | value6 | value7 | value8)
    return out_bytes


def convertHatB(img):

    img_bytes = bytearray(img.tobytes())
    pixel_number = int(len(img_bytes) / 3)
    red_bytes = bytearray()
    black_bytes = bytearray()
    for pos in range(pixel_number):
        R = img_bytes[pos * 3 + 0]
        G = img_bytes[pos * 3 + 1]
        B = img_bytes[pos * 3 + 2]
        value = convertRGBtoHatB_red(R, G, B)
        red_bytes.append(value)
        value = convertRGBtoHatB_black(R, G, B)
        black_bytes.append(value)

    out_bytes = eightByteToBit(red_bytes, pixel_number)
    out_bytes += eightByteToBit(black_bytes, pixel_number)

    return out_bytes
