Merge pull request #3055 from uploadcare/imagemorph-type-check

Fix incorrect image type checking in _imagingmorph module
This commit is contained in:
Alexander Karpinsky 2018-04-22 20:10:34 +03:00 committed by GitHub
commit dddeecc945
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 8 deletions

View File

@ -1,8 +1,7 @@
# Test the ImageMorphology functionality
from helper import unittest, PillowTestCase, hopper
from PIL import Image
from PIL import ImageMorph
from PIL import Image, ImageMorph, _imagingmorph
class MorphTests(PillowTestCase):
@ -284,6 +283,23 @@ class MorphTests(PillowTestCase):
# Assert
self.assertEqual(mop.lut, lut)
def test_wrong_mode(self):
lut = ImageMorph.LutBuilder(op_name='corner').build_lut()
imrgb = Image.new('RGB', (10, 10))
iml = Image.new('L', (10, 10))
with self.assertRaises(ValueError):
_imagingmorph.apply(bytes(lut), imrgb.im.id, iml.im.id)
with self.assertRaises(ValueError):
_imagingmorph.apply(bytes(lut), iml.im.id, imrgb.im.id)
with self.assertRaises(ValueError):
_imagingmorph.match(bytes(lut), imrgb.im.id)
# Should not raise
_imagingmorph.match(bytes(lut), iml.im.id)
if __name__ == '__main__':
unittest.main()

View File

@ -64,14 +64,14 @@ apply(PyObject *self, PyObject* args)
width = imgin->xsize;
height = imgin->ysize;
if (imgin->type != IMAGING_TYPE_UINT8 &&
if (imgin->type != IMAGING_TYPE_UINT8 ||
imgin->bands != 1) {
PyErr_SetString(PyExc_RuntimeError, "Unsupported image type");
PyErr_SetString(PyExc_ValueError, "Unsupported image type");
return NULL;
}
if (imgout->type != IMAGING_TYPE_UINT8 &&
if (imgout->type != IMAGING_TYPE_UINT8 ||
imgout->bands != 1) {
PyErr_SetString(PyExc_RuntimeError, "Unsupported image type");
PyErr_SetString(PyExc_ValueError, "Unsupported image type");
return NULL;
}
@ -167,9 +167,9 @@ match(PyObject *self, PyObject* args)
lut = PyBytes_AsString(py_lut);
imgin = (Imaging) i0;
if (imgin->type != IMAGING_TYPE_UINT8 &&
if (imgin->type != IMAGING_TYPE_UINT8 ||
imgin->bands != 1) {
PyErr_SetString(PyExc_RuntimeError, "Unsupported image type");
PyErr_SetString(PyExc_ValueError, "Unsupported image type");
return NULL;
}