Fix frame scaling for animated gifs (#2750)

This commit is contained in:
Dave T 2021-11-18 22:20:32 +00:00 committed by Jesse Hills
parent d30e2f2a4f
commit 3178243811
No known key found for this signature in database
GPG key ID: BEAAE804EFD8E83A

View file

@ -60,6 +60,10 @@ async def to_code(config):
image.seek(frameIndex) image.seek(frameIndex)
frame = image.convert("L", dither=Image.NONE) frame = image.convert("L", dither=Image.NONE)
pixels = list(frame.getdata()) pixels = list(frame.getdata())
if len(pixels) != height * width:
raise core.EsphomeError(
f"Unexpected number of pixels in frame {frameIndex}: {len(pixels)} != {height*width}"
)
for pix in pixels: for pix in pixels:
data[pos] = pix data[pos] = pix
pos += 1 pos += 1
@ -69,8 +73,14 @@ async def to_code(config):
pos = 0 pos = 0
for frameIndex in range(frames): for frameIndex in range(frames):
image.seek(frameIndex) image.seek(frameIndex)
if CONF_RESIZE in config:
image.thumbnail(config[CONF_RESIZE])
frame = image.convert("RGB") frame = image.convert("RGB")
pixels = list(frame.getdata()) pixels = list(frame.getdata())
if len(pixels) != height * width:
raise core.EsphomeError(
f"Unexpected number of pixels in frame {frameIndex}: {len(pixels)} != {height*width}"
)
for pix in pixels: for pix in pixels:
data[pos] = pix[0] data[pos] = pix[0]
pos += 1 pos += 1