codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#define BOOST_GIL_EXTERNAL_LIB ( BOOST_LIB_LINK_LOADTIME_OR_STATIC, BOOST_LIB_LOADING_STATIC, BOOST_LIB_INIT_ASSUME ) #include "boost/gil/extension/io2/wic_image.hpp" void my_reader_function() { using namespace boost; using namespace boost::gil; wic_image::guard const wic_guard; typedef image<bgr8_pixel_t, false> tile_holder_t; std::size_t const input_tile_size( 5000 ); tile_holder_t input_tile_holder( input_tile_size, input_tile_size ); typedef wic_image::reader_for<char const *>::type reader_t; reader_t reader( "my_big_image.tiff" ); point2<std::ptrdiff_t> const input_dimensions( reader.dimensions() ); BOOST_ASSERT( input_dimensions.x >= input_tile_size ); BOOST_ASSERT( input_dimensions.y >= input_tile_size ); std::size_t const output_tile_size( 256 ); tile_holder_t output_tile_holder( output_tile_size, output_tile_size ); typedef wic_image::writer_for<char const *>::type writer_t; for ( std::size_t offset( 0 ); ( offset < input_dimensions.x ) && ( offset < input_dimensions.y ); offset += input_tile_size ) { reader.copy_to ( reader.offset_view ( view( input_tile_holder ), reader_t::offset_t( offset, offset ) ), assert_dimensions_match(), assert_formats_match () //...or...ensure_formats_match () //...or...synchronize_formats () ); /* ...torture the input data... */ // store individual output tiles in output_tile_holder and write // them out in a loop // ... writer_t( "my_output_tile.png", view( output_tile_holder ), png ).write_default(); // ... } }
Private
[
?
]
Run code
Submit