This commit is contained in:
wiredfool 2025-04-01 04:14:03 +00:00 committed by GitHub
commit dd14d2e301
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 11 additions and 2 deletions

View File

@ -3185,7 +3185,7 @@ def frombuffer(
from . import ImagePalette
im.palette = ImagePalette.ImagePalette("RGB", im.im.getpalette("RGB"))
im.readonly = 1
im.readonly = im.im.readonly
return im
return frombytes(mode, size, data, decoder_name, args)

View File

@ -319,7 +319,7 @@ class ImageFile(Image.Image):
self.im = Image.core.map_buffer(
self.map, self.size, decoder_name, offset, args
)
readonly = 1
readonly = self.im.readonly
# After trashing self.im,
# we might need to reload the palette data.
if self.palette:

View File

@ -3722,6 +3722,11 @@ _getattr_unsafe_ptrs(ImagingObject *self, void *closure) {
);
}
static PyObject *
_getattr_readonly(ImagingObject *self, void *closure) {
return PyLong_FromLong(self->image->readonly);
}
static struct PyGetSetDef getsetters[] = {
{"mode", (getter)_getattr_mode},
{"size", (getter)_getattr_size},
@ -3729,6 +3734,7 @@ static struct PyGetSetDef getsetters[] = {
{"id", (getter)_getattr_id},
{"ptr", (getter)_getattr_ptr},
{"unsafe_ptrs", (getter)_getattr_unsafe_ptrs},
{"readonly", (getter)_getattr_readonly},
{NULL}
};

View File

@ -86,6 +86,7 @@ struct ImagingMemoryInstance {
int bands; /* Number of bands (1, 2, 3, or 4) */
int xsize; /* Image dimension. */
int ysize;
int readonly;
/* Colour palette (for "P" images only) */
ImagingPalette palette;

View File

@ -59,6 +59,7 @@ ImagingNewPrologueSubtype(const char *mode, int xsize, int ysize, int size) {
im->xsize = xsize;
im->ysize = ysize;
im->readonly = 0;
im->type = IMAGING_TYPE_UINT8;
if (strcmp(mode, "1") == 0) {

View File

@ -126,6 +126,7 @@ PyImaging_MapBuffer(PyObject *self, PyObject *args) {
return NULL;
}
im->readonly = view.readonly;
/* setup file pointers */
if (ystep > 0) {
for (y = 0; y < ysize; y++) {