6 #ifndef TURI_IMAGE_IMAGE_IO_IMPL_HPP 7 #define TURI_IMAGE_IMAGE_IO_IMPL_HPP 9 #ifndef png_infopp_NULL 10 #define png_infopp_NULL (png_infopp)NULL 14 #define int_p_NULL (int*)NULL 17 #include <core/data/image/image_type.hpp> 18 #include <boost/gil/extension/io/jpeg.hpp> 19 #include <boost/gil/extension/io/jpeg/old.hpp> 20 #include <boost/gil/extension/io/png.hpp> 21 #include <boost/gil/extension/io/png/old.hpp> 28 template<
typename pixel_type>
29 void write_image_impl(std::string filename,
char* data,
size_t& width,
size_t& height,
size_t& channels, Format format ) {
30 auto view = interleaved_view(width, height, (pixel_type*)data, width * channels *
sizeof(
char));
31 if (format == Format::JPG) {
32 jpeg_write_view(filename, view);
33 }
else if (format == Format::PNG){
34 png_write_view(filename, view);
40 void write_image_impl<rgba8_pixel_t>(std::string filename,
char* data,
size_t& width,
size_t& height,
size_t& channels,
Format format ) {
41 auto view = interleaved_view(width, height, (rgba8_pixel_t*)data, width * channels *
sizeof(
char));
42 if (format == Format::JPG) {
43 throw (
"JPEG does not support RGBA color type");
44 }
else if (format == Format::PNG){
45 png_write_view(filename, view);
54 template<
typename pixel_type>
55 void boost_read_image_impl(std::string filename,
char** data,
size_t& width,
size_t& height,
size_t& channels, Format format ) {
56 char* buf =
new char[width * height * channels];
57 auto view = interleaved_view(width, height, (pixel_type*)buf, width * channels *
sizeof(
char));
58 if (format == Format::JPG) {
59 jpeg_read_view(filename, view);
60 }
else if (format == Format::PNG){
61 png_read_view(filename, view);
68 void boost_read_image_impl<rgba8_pixel_t>(std::string filename,
char** data,
size_t& width,
size_t& height,
size_t& channels,
Format format ) {
69 char* buf =
new char[width * height * channels];
70 auto view = interleaved_view(width, height, (rgba8_pixel_t*)buf, width * channels *
sizeof(
char));
71 if (format == Format::JPG) {
72 throw (
"JPEG does not support RGBA color type");
73 }
else if (format == Format::PNG){
74 png_read_view(filename, view);