diff options
-rw-r--r-- | src/plugins/imageformats/jp2/qjp2handler.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/plugins/imageformats/jp2/qjp2handler.cpp b/src/plugins/imageformats/jp2/qjp2handler.cpp index f69538c..f8f35b4 100644 --- a/src/plugins/imageformats/jp2/qjp2handler.cpp +++ b/src/plugins/imageformats/jp2/qjp2handler.cpp @@ -777,6 +777,9 @@ bool Jpeg2000JasperReader::write(const QImage &image, int quality) if (qtDepth == 32) { // RGB(A) jasper_image = newRGBAImage(qtWidth, qtHeight, qtImage.hasAlphaChannel()); + if (!jasper_image) + return false; + if (qtImage.hasAlphaChannel()) copyQtJasper(&Jpeg2000JasperReader::copyScanlineQtJasperRGBA); else @@ -785,6 +788,9 @@ bool Jpeg2000JasperReader::write(const QImage &image, int quality) // Color mapped grayscale if (qtImage.allGray()) { jasper_image = newGrayscaleImage(qtWidth, qtHeight, qtImage.hasAlphaChannel()); + if (!jasper_image) + return false; + if (qtImage.hasAlphaChannel()) copyQtJasper(&Jpeg2000JasperReader::copyScanlineQtJasperColormapGrayscaleA); else @@ -792,6 +798,9 @@ bool Jpeg2000JasperReader::write(const QImage &image, int quality) } else { // Color mapped color jasper_image = newRGBAImage(qtWidth, qtHeight, qtImage.hasAlphaChannel()); + if (!jasper_image) + return false; + if (qtImage.hasAlphaChannel()) copyQtJasper(&Jpeg2000JasperReader::copyScanlineQtJasperColormapRGBA); else @@ -1041,6 +1050,11 @@ jas_image_t* Jpeg2000JasperReader::newRGBAImage(const int width, jas_image_t *newImage = jas_image_create(jasNumComponents, params, JAS_CLRSPC_SRGB); + if (!newImage) { + delete[] params; + return 0; + } + jas_image_setcmpttype(newImage, 0, JAS_IMAGE_CT_RGB_R); jas_image_setcmpttype(newImage, 1, JAS_IMAGE_CT_RGB_G); jas_image_setcmpttype(newImage, 2, JAS_IMAGE_CT_RGB_B); @@ -1074,6 +1088,8 @@ jas_image_t *Jpeg2000JasperReader::newGrayscaleImage(const int width, jasNumComponents = alpha ? 2 : 1; jas_image_cmptparm_t param = createComponentMetadata(width, height); jas_image_t *newImage = jas_image_create(1, ¶m, JAS_CLRSPC_SGRAY); + if (!newImage) + return 0; jas_image_setcmpttype(newImage, 0, JAS_IMAGE_CT_GRAY_Y); |