2 // Copyright 2013 Christian Henning
4 // Distributed under the Boost Software License, Version 1.0
5 // See accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt
8 //#define BOOST_TEST_MODULE jpeg_read_test_module
9 #include <boost/gil.hpp>
10 #include <boost/gil/extension/io/jpeg.hpp>
12 #include <boost/test/unit_test.hpp>
15 #include "scanline_read_test.hpp"
18 using namespace boost::gil;
20 using tag_t = jpeg_tag;
22 BOOST_AUTO_TEST_SUITE( gil_io_jpeg_tests )
24 #ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
26 BOOST_AUTO_TEST_CASE( read_header_test )
29 using backend_t = get_reader_backend<std::string const, tag_t>::type;
31 backend_t backend = read_image_info( jpeg_filename
35 BOOST_CHECK_EQUAL( backend._info._width , 1000u );
36 BOOST_CHECK_EQUAL( backend._info._height , 600u );
38 BOOST_CHECK_EQUAL( backend._info._num_components, 3 );
39 BOOST_CHECK_EQUAL( backend._info._color_space , JCS_YCbCr );
41 BOOST_CHECK_EQUAL( backend._info._data_precision, 8 );
45 BOOST_AUTO_TEST_CASE( read_pixel_density_test )
47 using backend_t = get_reader_backend<std::string const, tag_t>::type;
49 backend_t backend = read_image_info( jpeg_in + "EddDawson/36dpi.jpg"
54 read_image( jpeg_in + "EddDawson/36dpi.jpg", img, jpeg_tag() );
56 image_write_info< jpeg_tag > write_settings;
57 write_settings.set_pixel_dimensions( backend._info._width
58 , backend._info._height
59 , backend._info._pixel_width_mm
60 , backend._info._pixel_height_mm
63 stringstream in_memory( ios_base::in | ios_base::out | ios_base::binary );
64 write_view( in_memory, view( img ), write_settings );
66 using backend2_t = get_reader_backend<stringstream, tag_t>::type;
68 backend2_t backend2 = read_image_info( in_memory
72 // Because of rounding the two results differ slightly.
73 if( std::abs( backend._info._pixel_width_mm - backend2._info._pixel_width_mm ) > 10.0
74 || std::abs( backend._info._pixel_height_mm - backend2._info._pixel_height_mm ) > 10.0
77 BOOST_CHECK_EQUAL( 0, 1 );
81 BOOST_AUTO_TEST_CASE( read_reference_images_test )
83 using image_t = rgb8_image_t;
86 read_image( jpeg_filename
91 #ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
92 write_view( jpeg_out + "rgb8_test.jpg"
96 #endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
99 BOOST_AUTO_TEST_CASE( dct_method_read_test )
101 using image_t = rgb8_image_t;
104 image_read_settings< jpeg_tag > settings;
105 settings._dct_method = jpeg_dct_method::fast;
107 read_image( jpeg_filename
112 #ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
113 write_view( jpeg_out + "fast_dct_read_test.jpg"
117 #endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
120 BOOST_AUTO_TEST_CASE( read_reference_images_image_iterator_test )
122 test_scanline_reader< rgb8_image_t, jpeg_tag >( jpeg_filename.c_str() );
125 #endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
127 BOOST_AUTO_TEST_SUITE_END()