a [0,2] mező nem teljesen fekete hanem #000100 színű.
először én is úgy gondoltam h két pixel közti különbség csak kétszer akkora helyen férhet el, mert
első kép -> második kép
0 -> 255 => 255-0=255
255 -> 0 => 0-255=-255
-255..255 intervallumban kellene tárolni egy pixel egy csatornájának a különbségét, ami 2 byte.
viszont az fogadó félnek megvan az első kép és annak ismeretében elég a különbség 1 byte-ra eső részét közölni vele. egyszerűen hagyni kell tulcsordulni a byte-ban tárolt értékeket.
ezért az algoritmusom így néz ki pszeudókóddal:
különbség képzés:
max[r]=max[g]=max[b]=256
max[a]=128 (valamiért az alphát csak 7 biten tárolja)
img_diff[x,y,chan] = img_b[x,y,chan] - img_a[x,y,chan]
if img_diff[x,y,chan] < 0 then img_diff[x,y,chan] += max[chan]
összeadás:
b = img_a[x,y,chan] + img_diff[x,y,chan]
if b >= max[chan] then b -= max[chan]
img_b[x,y,chan] = b
így lesz az hogy a [0,2] mező
A: #ffff00
B: #ff0000
r -> ff - ff = 00
g -> 00 - ff = -ff = 01 (underflow)
b -> 00 - 00 = 00
C: #000100
összeadás a g csatornára:
ff + 01 = 0100 = 00 (overflow)
~~~~~~~~
deb http://deb.metaltux.tk/ wheezy yazzy repack