From fd70ef69e7fa655122d2ce6c15906f9ced9c64fb Mon Sep 17 00:00:00 2001 From: Hailin Jin Date: Wed, 15 Aug 2007 22:21:06 +0000 Subject: [PATCH] GIL: fixed a endian-ness related bug in PNG IO routines [SVN r38705] --- include/boost/gil/extension/io/png_io_private.hpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/include/boost/gil/extension/io/png_io_private.hpp b/include/boost/gil/extension/io/png_io_private.hpp index 56b6c0aa5..8034784f1 100644 --- a/include/boost/gil/extension/io/png_io_private.hpp +++ b/include/boost/gil/extension/io/png_io_private.hpp @@ -16,7 +16,7 @@ /// \brief Internal support for reading and writing PNG files /// \author Hailin Jin and Lubomir Bourdev \n /// Adobe Systems Incorporated -/// \date 2005-2007 \n Last updated September 24, 2006 +/// \date 2005-2007 \n Last updated August 14, 2007 #include #include @@ -162,6 +162,8 @@ protected: png_init_io(_png_ptr, get()); png_set_sig_bytes(_png_ptr,PNG_BYTES_TO_CHECK); png_read_info(_png_ptr, _info_ptr); + if (little_endian() && png_get_bit_depth(_png_ptr,_info_ptr)>8) + png_set_swap(_png_ptr); } public: png_reader(FILE* file ) : file_mgr(file) { init(); } @@ -337,6 +339,8 @@ public: PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT,PNG_FILTER_TYPE_DEFAULT); png_write_info(_png_ptr,_info_ptr); + if (little_endian() && png_get_bit_depth(_png_ptr,_info_ptr)>8) + png_set_swap(_png_ptr); std::vector::type, layout::type> > > row(view.width()); for(int y=0;y