1 /*
2 Copyright 2005-2007 Adobe Systems Incorporated
3
4 Use, modification and distribution are subject to the Boost Software License,
5 Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
6 http://www.boost.org/LICENSE_1_0.txt).
7
8 See http://opensource.adobe.com/gil for most recent version including documentation.
9 */
10
11 #include <boost/mpl/vector.hpp>
12 #include <boost/gil/typedefs.hpp>
13 #include <boost/gil/extension/dynamic_image/any_image.hpp>
14 #include <boost/gil/image_view.hpp>
15 #include <boost/gil/planar_pixel_reference.hpp>
16 #include <boost/gil/color_convert.hpp>
17 #include <boost/gil/typedefs.hpp>
18 #include <boost/gil/image_view_factory.hpp>
19 #ifndef BOOST_GIL_NO_IO
20 #include <boost/gil/extension/io/tiff_io.hpp>
21 #include <boost/gil/extension/io/jpeg_io.hpp>
22 #include <boost/gil/extension/io/png_io.hpp>
23 #include <boost/gil/extension/io/tiff_dynamic_io.hpp>
24 #include <boost/gil/extension/io/jpeg_dynamic_io.hpp>
25 #include <boost/gil/extension/io/png_dynamic_io.hpp>
26 #endif
27
28 using namespace boost::gil;
29
30 typedef any_image<boost::mpl::vector<gray8_image_t, bgr8_image_t, argb8_image_t,
31 rgb8_image_t, rgb8_planar_image_t,
32 cmyk8_image_t, cmyk8_planar_image_t,
33 rgba8_image_t, rgba8_planar_image_t> > any_image_t;
34
35 #ifdef BOOST_GIL_NO_IO
test_image_io()36 void test_image_io() {} // IO is not tested when BOOST_GIL_NO_IO is enabled
37 #else
test_image_io()38 void test_image_io() {
39 const std::string in_dir=""; // directory of source images
40 const std::string out_dir=in_dir+"image_io-out\\";
41 // ***********************************
42 // ************************ GRAY IMAGE
43 // ***********************************
44 gray8_image_t imgGray;
45 // TIFF
46 // load gray tiff into gray image
47 tiff_read_image(in_dir+"gray.tif",imgGray);
48 // save gray image to tiff
49 tiff_write_view(out_dir+"grayFromGray.tif",view(imgGray));
50
51 // load RGB tiff into gray image
52 tiff_read_and_convert_image(in_dir+"RGB.tif",imgGray);
53
54 // save gray image to tiff (again!)
55 tiff_write_view(out_dir+"grayFromRGB.tif",view(imgGray));
56
57 // JPEG
58 // load gray jpeg into gray image
59 jpeg_read_image(in_dir+"gray.jpg",imgGray);
60 // save gray image to gray jpeg
61 jpeg_write_view(out_dir+"grayFromGray.jpg",view(imgGray));
62
63 // load RGB jpeg into gray image
64 jpeg_read_and_convert_image(in_dir+"RGB.jpg",imgGray);
65 // save gray image to RGB jpeg
66 jpeg_write_view(out_dir+"grayFromRGB.jpg",color_converted_view<rgb8_pixel_t>(view(imgGray)));
67
68 // PNG
69 // load gray png into gray image
70 png_read_image(in_dir+"gray.png",imgGray);
71 // save gray image to gray png
72 png_write_view(out_dir+"grayFromGray.png",view(imgGray));
73
74 // load RGB png into gray image
75 png_read_and_convert_image(in_dir+"RGB.png",imgGray);
76 // save gray image to RGB png
77 png_write_view(out_dir+"grayFromRGB.png",color_converted_view<rgb8_pixel_t>(view(imgGray)));
78
79 // ***********************************
80 // ************************* RGB Planar
81 // ***********************************
82
83 rgb8_image_t imgRGB;
84
85 // TIFF
86
87 // load gray tiff into RGB image
88 tiff_read_and_convert_image(in_dir+"gray.tif",imgRGB);
89 // save RGB image to tiff
90 tiff_write_view(out_dir+"RGBFromGray.tif",view(imgRGB));
91
92 // load RGB tiff into RGB image
93 tiff_read_image(in_dir+"RGB.tif",imgRGB);
94 // save RGB image to tiff (again!)
95 tiff_write_view(out_dir+"RGBFromRGB.tif",view(imgRGB));
96
97 // JPEG
98 // load gray jpeg into RGB image
99 jpeg_read_and_convert_image(in_dir+"gray.jpg",imgRGB);
100 // save RGB image to gray jpeg
101 jpeg_write_view(out_dir+"RGBFromGray.jpg",view(imgRGB));
102
103 // load RGB jpeg into RGB image
104 jpeg_read_image(in_dir+"RGB.jpg",imgRGB);
105 // save RGB image to RGB jpeg
106 jpeg_write_view(out_dir+"RGBFromRGB.jpg",view(imgRGB));
107
108 // PNG
109 // load gray png into RGB image
110 png_read_and_convert_image(in_dir+"gray.png",imgRGB);
111 // save RGB image to gray png
112 png_write_view(out_dir+"RGBFromGray.png",view(imgRGB));
113
114 // load RGB png into RGB image
115 png_read_image(in_dir+"RGB.png",imgRGB);
116 // save RGB image to RGB png
117 png_write_view(out_dir+"RGBFromRGB.png",view(imgRGB));
118
119 // ***********************************
120 // ************************ GRAY32 Planar
121 // ***********************************
122 gray32f_image_t imgGray32;
123 // TIFF
124 // load gray tiff into gray image
125 tiff_read_and_convert_image(in_dir+"gray.tif",imgGray32);
126 // save gray image to tiff
127 tiff_write_view(out_dir+"gray32FromGray.tif",view(imgGray32));
128
129 // load RGB tiff into gray image
130 tiff_read_and_convert_image(in_dir+"RGB.tif",imgGray32);
131
132 // save gray image to tiff (again!)
133 tiff_write_view(out_dir+"gray32FromRGB.tif",view(imgGray32));
134
135 // JPEG
136 tiff_read_and_convert_image(in_dir+"gray.tif",imgGray32); // again TIF (jpeg load not supported)
137 // save RGB image to gray jpeg
138 tiff_write_view(out_dir+"gray32FromGray.jpg",view(imgGray32));
139
140 // load RGB jpeg into RGB image
141 tiff_read_and_convert_image(in_dir+"RGB.tif",imgGray32); // again TIF (jpeg load not supported)
142 // save RGB image to RGB jpeg
143 tiff_write_view(out_dir+"gray32FromRGB.jpg",color_converted_view<rgb32f_pixel_t>(view(imgGray32)));
144
145 // ***********************************
146 // ************************ NATIVE Planar
147 // ***********************************
148 any_image_t anyImg;
149
150 // TIFF
151 // load RGB tiff into any image
152 tiff_read_image(in_dir+"RGB.tif",anyImg);
153
154 // save any image to tiff
155 tiff_write_view(out_dir+"RGBNative.tif",view(anyImg));
156
157 // load gray tiff into any image
158 tiff_read_image(in_dir+"gray.tif",anyImg);
159
160 // save any image to tiff
161 tiff_write_view(out_dir+"grayNative.tif",view(anyImg));
162
163 // JPEG
164 // load gray jpeg into any image
165 jpeg_read_image(in_dir+"gray.jpg",anyImg);
166 // save any image to jpeg
167 jpeg_write_view(out_dir+"grayNative.jpg",view(anyImg));
168
169 // load RGB jpeg into any image
170 jpeg_read_image(in_dir+"RGB.jpg",anyImg);
171 // save any image to jpeg
172 jpeg_write_view(out_dir+"RGBNative.jpg",view(anyImg));
173
174 // PNG
175 // load gray png into any image
176 png_read_image(in_dir+"gray.png",anyImg);
177 // save any image to png
178 png_write_view(out_dir+"grayNative.png",view(anyImg));
179
180 // load RGB png into any image
181 png_read_image(in_dir+"RGB.png",anyImg);
182 // save any image to png
183 png_write_view(out_dir+"RGBNative.png",view(anyImg));
184 }
185 #endif
186
main(int argc,char * argv[])187 int main(int argc, char* argv[]) {
188 test_image_io();
189 return 0;
190 }
191
192