Перевод 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