From f327101fbfe3bff1ef5f8b4eb0537c014da1392e Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Wed, 18 Feb 2026 21:32:30 +1100 Subject: [PATCH] Simplified code --- src/PIL/Image.py | 4 ++-- src/decode.c | 15 +++++---------- src/encode.c | 15 +++++---------- 3 files changed, 12 insertions(+), 22 deletions(-) diff --git a/src/PIL/Image.py b/src/PIL/Image.py index cc431a86a5d..01f49ccc03f 100644 --- a/src/PIL/Image.py +++ b/src/PIL/Image.py @@ -885,7 +885,7 @@ def tobytes(self, encoder_name: str = "raw", *args: Any) -> bytes: # unpack data e = _getencoder(self.mode, encoder_name, encoder_args) - e.setimage(self.im) + e.setimage(self.im, (0, 0) + self.size) from . import ImageFile @@ -956,7 +956,7 @@ def frombytes( # unpack data d = _getdecoder(self.mode, decoder_name, decoder_args) - d.setimage(self.im) + d.setimage(self.im, (0, 0) + self.size) s = d.decode(data) if s[0] >= 0: diff --git a/src/decode.c b/src/decode.c index 7ec461c0e2c..c5c9cf56f70 100644 --- a/src/decode.c +++ b/src/decode.c @@ -163,7 +163,7 @@ _setimage(ImagingDecoderObject *decoder, PyObject *args) { x0 = y0 = x1 = y1 = 0; /* FIXME: should publish the ImagingType descriptor */ - if (!PyArg_ParseTuple(args, "O|(iiii)", &op, &x0, &y0, &x1, &y1)) { + if (!PyArg_ParseTuple(args, "O(iiii)", &op, &x0, &y0, &x1, &y1)) { return NULL; } im = PyImaging_AsImaging(op); @@ -176,15 +176,10 @@ _setimage(ImagingDecoderObject *decoder, PyObject *args) { state = &decoder->state; /* Setup decoding tile extent */ - if (x0 == 0 && x1 == 0) { - state->xsize = im->xsize; - state->ysize = im->ysize; - } else { - state->xoff = x0; - state->yoff = y0; - state->xsize = x1 - x0; - state->ysize = y1 - y0; - } + state->xoff = x0; + state->yoff = y0; + state->xsize = x1 - x0; + state->ysize = y1 - y0; if (state->xoff < 0 || state->xsize <= 0 || state->xsize + state->xoff > (int)im->xsize || state->yoff < 0 || diff --git a/src/encode.c b/src/encode.c index 06e4a089380..e94ac06293a 100644 --- a/src/encode.c +++ b/src/encode.c @@ -232,7 +232,7 @@ _setimage(ImagingEncoderObject *encoder, PyObject *args) { x0 = y0 = x1 = y1 = 0; /* FIXME: should publish the ImagingType descriptor */ - if (!PyArg_ParseTuple(args, "O|(nnnn)", &op, &x0, &y0, &x1, &y1)) { + if (!PyArg_ParseTuple(args, "O(nnnn)", &op, &x0, &y0, &x1, &y1)) { return NULL; } im = PyImaging_AsImaging(op); @@ -244,15 +244,10 @@ _setimage(ImagingEncoderObject *encoder, PyObject *args) { state = &encoder->state; - if (x0 == 0 && x1 == 0) { - state->xsize = im->xsize; - state->ysize = im->ysize; - } else { - state->xoff = x0; - state->yoff = y0; - state->xsize = x1 - x0; - state->ysize = y1 - y0; - } + state->xoff = x0; + state->yoff = y0; + state->xsize = x1 - x0; + state->ysize = y1 - y0; if (state->xoff < 0 || state->xsize <= 0 || state->xsize + state->xoff > im->xsize || state->yoff < 0 ||