Boost logo

Boost Users :

Subject: Re: [Boost-users] [gil io_new] Problem writing a compressed jpeg
From: Olivier Tournaire (olitour_at_[hidden])
Date: 2010-06-07 11:23:20


Sorry for the mess, it was my mistake. Please do not take care of my
previous mail.

Regards,

Olivier

2010/6/7 Olivier Tournaire <olitour_at_[hidden]>

> Hi Christian,
>
> 2010/6/2 Christian Henning <chhenning_at_[hidden]>
>
>> Hi Olivier,
>>
>>
>> >
>> > The code works. However, the output image is not compressed. It has the
>> same
>> > size (in octets) as the one which uses the default jpeg_tag.
>>
>> On my system the jpeg with quality set to 100% is 20KB, whereas the
>> one with 30% for quality is only 4KB. Could you set a breakpoint in
>> boost\gil\extension\io_new\formats\jpeg\write.hpp[119]? That's where
>> the quality is set.
>>
>
>
> It finally works on one of my computer ... but on another one, I get a
> compilation error. Here is the (long) message :
>
> /usr/local/include/boost/gil/extension/io_new/formats/jpeg/write.hpp: In
> function ‘typename Op::result_type
> boost::gil::detail::apply_operation_base(Bits&, size_t, const Info&, Op)
> [with Types =
> boost::mpl::v_item<boost::gil::image_view<boost::gil::memory_based_2d_locator<boost::gil::memory_based_step_iterator<boost::gil::rgb16_pixel_t*>
> > >,
> boost::mpl::v_item<boost::gil::image_view<boost::gil::memory_based_2d_locator<boost::gil::memory_based_step_iterator<boost::gil::rgb8_pixel_t*>
> > >, boost::mpl::vector0<mpl_::na>, 0>, 0>, Info =
> boost::gil::image_write_info<boost::gil::jpeg_tag,
> boost::gil::detail::no_log>, Bits =
> boost::gil::variant<boost::mpl::v_item<boost::gil::image_view<boost::gil::memory_based_2d_locator<boost::gil::memory_based_step_iterator<boost::gil::rgb16_pixel_t*>
> > >,
> boost::mpl::v_item<boost::gil::image_view<boost::gil::memory_based_2d_locator<boost::gil::memory_based_step_iterator<boost::gil::rgb8_pixel_t*>
> > >, boost::mpl::vector0<mpl_::na>, 0>, 0> >::base_t, Op =
> boost::gil::detail::dynamic_io_fnobj<boost::gil::detail::jpeg_write_is_supported,
> boost::gil::detail::writer<boost::gil::detail::file_stream_device<boost::gil::jpeg_tag>,
> boost::gil::jpeg_tag, boost::gil::detail::no_log> >]’:
>
> /usr/local/include/boost/gil/extension/io_new/formats/jpeg/write.hpp:269:
> *instantiated from ‘typename BinaryOp::result_type
> boost::gil::detail::apply_**operation*(const boost::gil::variant<Types>&,
> const Info&, BinaryOp) [with Types1 =
> boost::mpl::v_item<boost::gil::image_view<boost::gil::memory_based_2d_locator<boost::gil::memory_based_step_iterator<boost::gil::rgb16_pixel_t*>
> > >,
> boost::mpl::v_item<boost::gil::image_view<boost::gil::memory_based_2d_locator<boost::gil::memory_based_step_iterator<boost::gil::rgb8_pixel_t*>
> > >, boost::mpl::vector0<mpl_::na>, 0>, 0>, Info =
> boost::gil::image_write_info<boost::gil::jpeg_tag,
> boost::gil::detail::no_log>, BinaryOp =
> boost::gil::detail::dynamic_io_fnobj<boost::gil::detail::jpeg_write_is_supported,
> boost::gil::detail::writer<boost::gil::detail::file_stream_device<boost::gil::jpeg_tag>,
> boost::gil::jpeg_tag, boost::gil::detail::no_log> >]’
>
> /usr/local/include/boost/gil/extension/io_new/formats/jpeg/write.hpp:309:
> instantiated from ‘void boost::gil::detail::dynamic_image_writer<Device,
> boost::gil::jpeg_tag, boost::gil::detail::no_log>::apply(const
> boost::gil::any_image_view<Views>&, const
> boost::gil::image_write_info<boost::gil::jpeg_tag,
> boost::gil::detail::no_log>&) [with Views =
> boost::mpl::v_item<boost::gil::image_view<boost::gil::memory_based_2d_locator<boost::gil::memory_based_step_iterator<boost::gil::rgb16_pixel_t*>
> > >,
> boost::mpl::v_item<boost::gil::image_view<boost::gil::memory_based_2d_locator<boost::gil::memory_based_step_iterator<boost::gil::rgb8_pixel_t*>
> > >, boost::mpl::vector0<mpl_::na>, 0>, 0>, Device =
> boost::gil::detail::file_stream_device<boost::gil::jpeg_tag>]’
>
> /usr/local/include/boost/gil/extension/io_new/detail/write_view.hpp:302: *instantiated
> from ‘void boost::gil::write_view*(Device&, const
> boost::gil::any_image_view<Types2>&, const
> boost::gil::image_write_info<FormatTag, Log>&, typename
> boost::enable_if<typename boost::mpl::and_<typename
> boost::gil::detail::is_output_device<IODevice>::type, typename
> boost::gil::is_format_tag<FormatTag>::type, mpl_::bool_<true>,
> mpl_::bool_<true>, mpl_::bool_<true> >::type, void>::type*) [with Device =
> boost::gil::detail::file_stream_device<boost::gil::jpeg_tag>, Views =
> boost::mpl::v_item<boost::gil::image_view<boost::gil::memory_based_2d_locator<boost::gil::memory_based_step_iterator<boost::gil::rgb16_pixel_t*>
> > >,
> boost::mpl::v_item<boost::gil::image_view<boost::gil::memory_based_2d_locator<boost::gil::memory_based_step_iterator<boost::gil::rgb8_pixel_t*>
> > >, boost::mpl::vector0<mpl_::na>, 0>, 0>, FormatTag =
> boost::gil::jpeg_tag, Log = boost::gil::detail::no_log]’
>
> /usr/local/include/boost/gil/extension/io_new/detail/write_view.hpp:357: *instantiated
> from ‘void boost::gil::write_view*(const String&, const
> boost::gil::any_image_view<Types2>&, const
> boost::gil::image_write_info<FormatTag, Log>&, typename
> boost::enable_if<typename boost::mpl::and_<typename
> boost::gil::detail::is_supported_path_spec<P>::type, typename
> boost::gil::is_format_tag<FormatTag>::type, mpl_::bool_<true>,
> mpl_::bool_<true>, mpl_::bool_<true> >::type, void>::type*) [with String =
> const char*, Views =
> boost::mpl::v_item<boost::gil::image_view<boost::gil::memory_based_2d_locator<boost::gil::memory_based_step_iterator<boost::gil::rgb16_pixel_t*>
> > >,
> boost::mpl::v_item<boost::gil::image_view<boost::gil::memory_based_2d_locator<boost::gil::memory_based_step_iterator<boost::gil::rgb8_pixel_t*>
> > >, boost::mpl::vector0<mpl_::na>, 0>, 0>, FormatTag =
> boost::gil::jpeg_tag, Log = boost::gil::detail::no_log]’
>
> /home/olivier/work/dev/OTO_DEV/projects/tif2jpeg_for_itowns_viewer/main_tif2jpeg_for_itowns_viewer.cpp:43:
> instantiated from here
>
> /usr/local/include/boost/gil/extension/io_new/formats/jpeg/write.hpp:244:
> *error: no matching function for call to ‘boost::gil::detail::apply_**
> operation_fwd_fn<2ul>::apply*(boost::gil::variant<boost::mpl::v_item<boost::gil::image_view<boost::gil::memory_based_2d_locator<boost::gil::memory_based_step_iterator<boost::gil::rgb16_pixel_t*>
> > >,
> boost::mpl::v_item<boost::gil::image_view<boost::gil::memory_based_2d_locator<boost::gil::memory_based_step_iterator<boost::gil::rgb8_pixel_t*>
> > >, boost::mpl::vector0<mpl_::na>, 0>, 0> >::base_t&, size_t&, const
> boost::gil::image_write_info<boost::gil::jpeg_tag,
> boost::gil::detail::no_log>&,
> boost::gil::detail::dynamic_io_fnobj<boost::gil::detail::jpeg_write_is_supported,
> boost::gil::detail::writer<boost::gil::detail::file_stream_device<boost::gil::jpeg_tag>,
> boost::gil::jpeg_tag, boost::gil::detail::no_log> >&)’
>
> /usr/local/include/boost/gil/extension/io_new/formats/jpeg/write.hpp:244:
> *error: return-statement with a value, in function returning 'void'*
>
>
> If I comment the info parameter on line 242 of formats/jpeg/write.hpp, the
> compilation error disappears, but, the infos are not passed to the writer,
> what explain why my image is not compressed (the parameters are set to their
> default values). Could you please help on how to fix this error?
> I am on a linux ubuntu karmic koala, boost 1.42, libjpeg 6.2, g++ 4.3.4
>
> Best regards,
>
> Olivier
>
>
>> >>
>> >> BTW, you can pass strings into the io_new interface. No need for
>> >> c_str(). Also the jpeg_dct_method::fastest parameter works just fine.
>> >
>> > Could yo please also tell me more about this parameter?
>>
>> The dct parameter stands for discrete cosine transformation and it's
>> for selecting the appropriate method to do that transformation. In
>> some cases those calculation can be quite expensive.
>>
>> Regards,
>> Christian
>> _______________________________________________
>> Boost-users mailing list
>> Boost-users_at_[hidden]
>> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>>
>
>



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