diff --git a/modules/highgui/test/test_grfmt.cpp b/modules/highgui/test/test_grfmt.cpp index f590c637df..d6fc65a6b4 100644 --- a/modules/highgui/test/test_grfmt.cpp +++ b/modules/highgui/test/test_grfmt.cpp @@ -217,11 +217,41 @@ public: } }; + #ifdef HAVE_PNG -TEST(Highgui_Image, write_big) { CV_GrfmtWriteBigImageTest test; test.safe_run(); } +TEST(Highgui_Image, write_big) { CV_GrfmtWriteBigImageTest test; test.safe_run(); } #endif TEST(Highgui_Image, write_imageseq) { CV_GrfmtWriteSequenceImageTest test; test.safe_run(); } TEST(Highgui_Image, read_bmp_rle8) { CV_GrfmtReadBMPRLE8Test test; test.safe_run(); } +#ifdef HAVE_PNG +class CV_GrfmtPNGEncodeTest : public cvtest::BaseTest +{ +public: + void run(int) + { + try + { + vector buff; + Mat im = Mat::zeros(1000,1000, CV_8U); + //randu(im, 0, 256); + vector param; + param.push_back(CV_IMWRITE_PNG_COMPRESSION); + param.push_back(3); //default(3) 0-9. + cv::imencode(".png" ,im ,buff, param); + + // hangs + Mat im2 = imdecode(buff,CV_LOAD_IMAGE_ANYDEPTH); + } + catch(...) + { + ts->set_failed_test_info(cvtest::TS::FAIL_EXCEPTION); + } + ts->set_failed_test_info(cvtest::TS::OK); + } +}; + +TEST(Highgui_Image, encode_png) { CV_GrfmtPNGEncodeTest test; test.safe_run(); } +#endif