Skip to content

Commit

Permalink
Optimize (#911)
Browse files Browse the repository at this point in the history
  • Loading branch information
mitchelljkotler committed Oct 13, 2023
1 parent 5114acd commit 63565ae
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions pdfminer/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,16 +138,16 @@ def apply_png_predictor(

nbytes = colors * columns * bitspercomponent // 8
bpp = colors * bitspercomponent // 8 # number of bytes per complete pixel
buf = b""
buf = []
line_above = b"\x00" * columns
for scanline_i in range(0, len(data), nbytes + 1):
filter_type = data[scanline_i]
line_encoded = data[scanline_i + 1 : scanline_i + 1 + nbytes]
raw = b""
raw = []

if filter_type == 0:
# Filter type 0: None
raw += line_encoded
raw = list(line_encoded)

elif filter_type == 1:
# Filter type 1: Sub
Expand All @@ -162,7 +162,7 @@ def apply_png_predictor(
else:
raw_x_bpp = int(raw[j - bpp])
raw_x = (sub_x + raw_x_bpp) & 255
raw += bytes((raw_x,))
raw.append(raw_x)

elif filter_type == 2:
# Filter type 2: Up
Expand All @@ -173,7 +173,7 @@ def apply_png_predictor(
# the prior scanline.
for (up_x, prior_x) in zip(line_encoded, line_above):
raw_x = (up_x + prior_x) & 255
raw += bytes((raw_x,))
raw.append(raw_x)

elif filter_type == 3:
# Filter type 3: Average
Expand All @@ -191,7 +191,7 @@ def apply_png_predictor(
raw_x_bpp = int(raw[j - bpp])
prior_x = int(line_above[j])
raw_x = (average_x + (raw_x_bpp + prior_x) // 2) & 255
raw += bytes((raw_x,))
raw.append(raw_x)

elif filter_type == 4:
# Filter type 4: Paeth
Expand All @@ -212,14 +212,14 @@ def apply_png_predictor(
prior_x = int(line_above[j])
paeth = paeth_predictor(raw_x_bpp, prior_x, prior_x_bpp)
raw_x = (paeth_x + paeth) & 255
raw += bytes((raw_x,))
raw.append(raw_x)

else:
raise ValueError("Unsupported predictor value: %d" % filter_type)

buf += raw
buf.extend(raw)
line_above = raw
return buf
return bytes(buf)


Point = Tuple[float, float]
Expand Down

0 comments on commit 63565ae

Please sign in to comment.