( bAndie9100 | 2014. 07. 02., sze – 21:12 )

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