Boost logo

Boost Users :

Subject: Re: [Boost-users] [boost-users][GIL] Colors broken after moving to New IO
From: Szymon Gatner (szymon.gatner_at_[hidden])
Date: 2011-04-27 09:27:27


2011/3/14 Szymon Gatner <szymon.gatner_at_[hidden]>:
> 2011/3/8 Christian Henning <chhenning_at_[hidden]>:
>>
>> Here is the code I tried:
>>
>> #include <boost/gil/gil_all.hpp>
>>
>> #define BOOST_FILESYSTEM_VERSION 2
>> #include <boost/filesystem/convenience.hpp>
>>
>> #include <boost\algorithm\string.hpp>
>>
>> #define BOOST_GIL_IO_ADD_FS_PATH_SUPPORT
>> #include <boost/gil/extension/io_new/png_all.hpp>
>>
>> using namespace boost;
>> using namespace gil;
>>
>> int main()
>> {
>>    rgba8_image_t img;
>>
>>    read_image(
>> "C:\\gil_contribution\\test_images\\png\\wikipedia\\test.png", img,
>> png_tag() );
>>
>>    write_view( "c:\\out.png", view( img ), png_tag() );
>>
>>    return 0;
>> }
>>
>
> Very sorry for late reply, been too busy to do additional testing.
>
> Your code works for for me also, but worst part is, I was not able to
> provide minimal test code that demonstrates what I experience in the
> main project as it works fine also. I will still try to do that and
> hopefully got some more info when it is done.
>
> Thanks for your support and especially on work with GIL.
>
> Cherrs,
> Szymon
>

Hi again,

took a while but finally got some time to do some additional testing.

I wrote small app:

#include <fstream>
#include <boost/foreach.hpp>
#include <boost/gil/extension/io_new/png_read.hpp>

using namespace boost;

int main()
{
  gil::rgba8_image_t img;

  gil::read_image("test.png", img, gil::png_tag());

  std::ofstream os("dump.txt");

  int size = sizeof(gil::rgba8_pixel_t);

  BOOST_FOREACH(const gil::rgba8_pixel_t& pix,
std::make_pair(img._view.begin(), img._view.end()))
  {
    os << (int) pix[0] << " " << (int) pix[1] << " " << (int) pix[2]
<< " " << (int) pix[3] << "\n";
  }
}

that code produces different text files when built in debug and
release modes and observed text
file difference is exactly what I also experience on the screen. For example:

debug:

23 74 23 9
0 0 0 0
24 83 24 25
0 0 0 0
24 82 24 43
24 83 24 36
24 83 24 47
24 81 24 52
24 82 24 45
23 81 23 45
23 80 23 41
0 0 0 0
23 79 23 32

release:

255 255 255 9
0 0 0 0
255 255 255 25
0 0 0 0
255 255 255 43
255 255 255 36
255 255 255 47
255 255 255 52
255 255 255 45
255 255 255 45
255 255 255 41
0 0 0 0
255 255 255 32

Alpha channels is preserved but R G B channels are saturated to 255 always.

Cheers,
Simon


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net