mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-01-16 20:36:31 +03:00
im.split method
ImagingSplit function without implementation
This commit is contained in:
parent
c23b65c670
commit
559836d97d
|
@ -1954,9 +1954,7 @@ class Image(object):
|
||||||
if self.im.bands == 1:
|
if self.im.bands == 1:
|
||||||
ims = [self.copy()]
|
ims = [self.copy()]
|
||||||
else:
|
else:
|
||||||
ims = []
|
ims = map(self._new, self.im.split())
|
||||||
for i in range(self.im.bands):
|
|
||||||
ims.append(self._new(self.im.getband(i)))
|
|
||||||
return tuple(ims)
|
return tuple(ims)
|
||||||
|
|
||||||
def tell(self):
|
def tell(self):
|
||||||
|
|
27
_imaging.c
27
_imaging.c
|
@ -1905,6 +1905,32 @@ _putband(ImagingObject* self, PyObject* args)
|
||||||
return Py_None;
|
return Py_None;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static PyObject*
|
||||||
|
_split(ImagingObject* self, PyObject* args)
|
||||||
|
{
|
||||||
|
int fails = 0;
|
||||||
|
Py_ssize_t i;
|
||||||
|
PyObject* list;
|
||||||
|
PyObject* imaging_object;
|
||||||
|
Imaging bands[4] = {NULL, NULL, NULL, NULL};
|
||||||
|
|
||||||
|
if ( ! ImagingSplit(self->image, bands))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
list = PyTuple_New(self->image->bands);
|
||||||
|
for (i = 0; i < self->image->bands; i++) {
|
||||||
|
imaging_object = PyImagingNew(bands[i]);
|
||||||
|
if ( ! imaging_object)
|
||||||
|
fails += 1;
|
||||||
|
PyTuple_SET_ITEM(list, i, imaging_object);
|
||||||
|
}
|
||||||
|
if (fails) {
|
||||||
|
Py_DECREF(list);
|
||||||
|
list = NULL;
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------- */
|
||||||
|
|
||||||
#ifdef WITH_IMAGECHOPS
|
#ifdef WITH_IMAGECHOPS
|
||||||
|
@ -2972,6 +2998,7 @@ static struct PyMethodDef methods[] = {
|
||||||
|
|
||||||
{"getband", (PyCFunction)_getband, 1},
|
{"getband", (PyCFunction)_getband, 1},
|
||||||
{"putband", (PyCFunction)_putband, 1},
|
{"putband", (PyCFunction)_putband, 1},
|
||||||
|
{"split", (PyCFunction)_split, 1},
|
||||||
{"fillband", (PyCFunction)_fillband, 1},
|
{"fillband", (PyCFunction)_fillband, 1},
|
||||||
|
|
||||||
{"setmode", (PyCFunction)im_setmode, 1},
|
{"setmode", (PyCFunction)im_setmode, 1},
|
||||||
|
|
|
@ -72,6 +72,19 @@ ImagingGetBand(Imaging imIn, int band)
|
||||||
return imOut;
|
return imOut;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
ImagingSplit(Imaging imIn, Imaging bands[4])
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < imIn->bands; i++) {
|
||||||
|
bands[i] = ImagingNew("L", imIn->xsize, imIn->ysize);
|
||||||
|
}
|
||||||
|
|
||||||
|
return imIn->bands;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Imaging
|
Imaging
|
||||||
ImagingPutBand(Imaging imOut, Imaging imIn, int band)
|
ImagingPutBand(Imaging imOut, Imaging imIn, int band)
|
||||||
{
|
{
|
||||||
|
|
|
@ -267,6 +267,7 @@ extern Imaging ImagingFlipTopBottom(Imaging imOut, Imaging imIn);
|
||||||
extern Imaging ImagingGaussianBlur(Imaging imOut, Imaging imIn, float radius,
|
extern Imaging ImagingGaussianBlur(Imaging imOut, Imaging imIn, float radius,
|
||||||
int passes);
|
int passes);
|
||||||
extern Imaging ImagingGetBand(Imaging im, int band);
|
extern Imaging ImagingGetBand(Imaging im, int band);
|
||||||
|
extern int ImagingSplit(Imaging im, Imaging bands[4]);
|
||||||
extern int ImagingGetBBox(Imaging im, int bbox[4]);
|
extern int ImagingGetBBox(Imaging im, int bbox[4]);
|
||||||
typedef struct { int x, y; INT32 count; INT32 pixel; } ImagingColorItem;
|
typedef struct { int x, y; INT32 count; INT32 pixel; } ImagingColorItem;
|
||||||
extern ImagingColorItem* ImagingGetColors(Imaging im, int maxcolors,
|
extern ImagingColorItem* ImagingGetColors(Imaging im, int maxcolors,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user