PNG predictor added

pull/1/head
Yusuke Shinyama 2011-06-07 00:46:33 +09:00
parent 18a5058af6
commit 0278076ea8
1 changed files with 13 additions and 6 deletions

View File

@ -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)