mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-08-13 08:44:45 +03:00
Added ability to pass memoryview
object to ImageDecoder
This commit is contained in:
parent
4ab4bfe89b
commit
c7aceff185
15
src/decode.c
15
src/decode.c
|
@ -116,12 +116,24 @@ _dealloc(ImagingDecoderObject *decoder) {
|
|||
|
||||
static PyObject *
|
||||
_decode(ImagingDecoderObject *decoder, PyObject *args) {
|
||||
PyObject *input_object, *memview = NULL;
|
||||
Py_buffer *memview_buf;
|
||||
UINT8 *buffer;
|
||||
Py_ssize_t bufsize;
|
||||
int status;
|
||||
ImagingSectionCookie cookie;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "y#", &buffer, &bufsize)) {
|
||||
if (!PyArg_ParseTuple(args, "O", &input_object)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (PyMemoryView_Check(input_object)) {
|
||||
memview = PyMemoryView_FromObject(input_object);
|
||||
memview_buf = PyMemoryView_GET_BUFFER(memview);
|
||||
buffer = memview_buf->buf;
|
||||
bufsize = memview_buf->len;
|
||||
}
|
||||
else if (!PyArg_ParseTuple(args, "y#", &buffer, &bufsize)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -135,6 +147,7 @@ _decode(ImagingDecoderObject *decoder, PyObject *args) {
|
|||
ImagingSectionLeave(&cookie);
|
||||
}
|
||||
|
||||
Py_XDECREF(memview);
|
||||
return Py_BuildValue("ii", status, decoder->state.errcode);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user