mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-07-28 17:10:02 +03:00
Only calculate LUMA deltas when necessary
This commit is contained in:
parent
a714db9057
commit
2e8e86cba1
|
@ -182,12 +182,10 @@ class QoiEncoder(ImageFile.PyEncoder):
|
||||||
self._previously_seen_pixels[hash_value] = pixel
|
self._previously_seen_pixels[hash_value] = pixel
|
||||||
|
|
||||||
pr, pg, pb, pa = self._previous_pixel
|
pr, pg, pb, pa = self._previous_pixel
|
||||||
if a == pa:
|
if pa == a:
|
||||||
dr = self._delta(r, pr)
|
dr = self._delta(r, pr)
|
||||||
dg = self._delta(g, pg)
|
dg = self._delta(g, pg)
|
||||||
db = self._delta(b, pb)
|
db = self._delta(b, pb)
|
||||||
dgr = self._delta(dr, dg)
|
|
||||||
dgb = self._delta(db, dg)
|
|
||||||
|
|
||||||
if -2 <= dr < 2 and -2 <= dg < 2 and -2 <= db < 2:
|
if -2 <= dr < 2 and -2 <= dg < 2 and -2 <= db < 2:
|
||||||
data += o8(
|
data += o8(
|
||||||
|
@ -196,7 +194,10 @@ class QoiEncoder(ImageFile.PyEncoder):
|
||||||
| (dg + 2) << 2
|
| (dg + 2) << 2
|
||||||
| (db + 2)
|
| (db + 2)
|
||||||
) # QOI_OP_DIFF
|
) # QOI_OP_DIFF
|
||||||
elif -8 <= dgr < 8 and -32 <= dg < 32 and -8 <= dgb < 8:
|
else:
|
||||||
|
dgr = self._delta(dr, dg)
|
||||||
|
dgb = self._delta(db, dg)
|
||||||
|
if -8 <= dgr < 8 and -32 <= dg < 32 and -8 <= dgb < 8:
|
||||||
data += o8(0b10000000 | (dg + 32)) # QOI_OP_LUMA
|
data += o8(0b10000000 | (dg + 32)) # QOI_OP_LUMA
|
||||||
data += o8((dgr + 8) << 4 | (dgb + 8))
|
data += o8((dgr + 8) << 4 | (dgb + 8))
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user