PNG predictor added
parent
18a5058af6
commit
0278076ea8
|
@ -25,15 +25,22 @@ def apply_png_predictor(pred, colors, columns, bitspercomponent, data):
|
||||||
# PNG none
|
# PNG none
|
||||||
buf += line1
|
buf += line1
|
||||||
elif pred == '\x01':
|
elif pred == '\x01':
|
||||||
# PNG sub
|
# PNG sub (UNTESTED)
|
||||||
b = 0
|
c = 0
|
||||||
for c in line1:
|
for b in line1:
|
||||||
b += ord(c)
|
c = (c+ord(b)) & 255
|
||||||
buf += chr(b & 255)
|
buf += chr(c)
|
||||||
elif pred == '\x02':
|
elif pred == '\x02':
|
||||||
# PNG up
|
# PNG up
|
||||||
for (a,b) in zip(line0,line1):
|
for (a,b) in zip(line0,line1):
|
||||||
buf += chr((ord(a)+ord(b)) & 255)
|
c = (ord(a)+ord(b)) & 255
|
||||||
|
buf += chr(c)
|
||||||
|
elif pred == '\x03':
|
||||||
|
# PNG average (UNTESTED)
|
||||||
|
c = 0
|
||||||
|
for (a,b) in zip(line0,line1):
|
||||||
|
c = ((c+ord(a)+ord(b))/2) & 255
|
||||||
|
buf += chr(c)
|
||||||
else:
|
else:
|
||||||
# unsupported
|
# unsupported
|
||||||
raise ValueError(pred)
|
raise ValueError(pred)
|
||||||
|
|
Loading…
Reference in New Issue