Перевод PNG и JPG в RGB/RGBA, объясните код

есть кусок кода, где, как я понимаю, форматы раскладываются на пиксели/переводятся в rgb(a в случае png). Вопрос вот в чем: почему это происходит именно так? Это учебное задание, и преподаватель предоставил кусок кода, но объяснять не стал... пожалуйста, подскажите, откуда взяты числа. Такое чувство, что с потолка...

def png_decryption(x, y):
    r, g, b, a = x
    r1, g1, b1, a1 = y
    count = 0
    count += abs(r - r1) + abs(g - g1) + abs(b - b1)
    k = abs(a - a1)
    if k == 1:
        count += 96
    elif k == 2:
        count += 64
    elif k == 3:
        count += 45
    elif k == 4:
        count = 44
    elif k == 5:
        count = 32
    elif k == 6:
        count = 33
    elif k == 7:
        count = 63
    elif k == 8:
        count += 48
    elif k == 9:
        count = 10
    return count


def jpg_decryption(x, y):
    r, g, b = x
    r1, g1, b1 = y
    count = abs(r - r1) + abs(g - g1) * 2
    k = abs(b - b1)
    if k == 2:
        count += 64
    elif k == 1:
        count += 96
    elif k == 3:
        count += 45
    elif k == 4:
        count = 44
    elif k == 5:
        count = 32
    elif k == 6:
        count = 33
    elif k == 7:
        count = 63
    elif k == 8:
        count += 48
    elif k == 9:
        count = 10
    return count


def f(x, z):
    if x + z <= 255:
        z += x
    else:
        z -= x
    return z


def jpg(i, pixel, text):
    r, g, b = pixel
    s = ord(text[i])
    if 97 <= s <= 122:
        s -= 96
        b = f(1, b)
    elif 65 <= s <= 90:
        s -= 64
        b = f(2, b)
    elif 48 <= s <= 57:
        s -= 48
        b = f(8, b)
    elif s == 33:
        s = 1
        b = f(6, b)
    elif s == 63:
        s = 1
        b = f(7, b)
    elif s == 46:
        s = 1
        b = f(3, b)
    elif s == 44:
        s = 1
        b = f(4, b)
    elif s == 32:
        s = 1
        b = f(5, b)
    elif s == 10:
        s = 1
        b = f(9, b)
    x = s // 3
    z = s - x - x
    r = f(z, r)
    g = f(x, g)
    return r, g, b


def png(i, pixel, text):
    r, g, b, a = pixel
    s = ord(text[i])
    if 97 <= s <= 122:
        s -= 96
        a = f(1, a)
    elif 65 <= s <= 90:
        s -= 64
        a = f(2, a)
    elif s == 46:
        s -= 45
        a = f(3, a)
    elif s == 44:
        s = 1
        a = f(4, a)
    elif s == 32:
        s = 1
        a = f(5, a)
    elif 48 <= s <= 57:
        s -= 64
        a = f(8, a)
    elif s == 33:
        s = 1
        a = f(6, a)
    elif s == 63:
        s = 1
        a = f(7, a)
    elif s == 10:
        s = 1
        a = f(9, a)
    x = s // 3
    y = (s - x) // 2
    z = s - x - y
    r = f(x, r)
    g = f(y, g)
    b = f(z, b)
    return r, g, b, a

Ответы (0 шт):