fix scaling gray images
This commit is contained in:
parent
da1247fa1e
commit
2596f7bd52
1 changed files with 31 additions and 17 deletions
|
@ -89,21 +89,29 @@ struct image_dispatcher
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void operator() (T const& data_in) const
|
void operator() (T const& data_in) const
|
||||||
{
|
{
|
||||||
using image_type = T;
|
image_rgba8 colorized(data_in.width(), data_in.height());
|
||||||
image_rgba8 dst(width_, height_);
|
|
||||||
raster_colorizer_ptr colorizer = get<raster_colorizer_ptr>(sym_, keys::colorizer);
|
raster_colorizer_ptr colorizer = get<raster_colorizer_ptr>(sym_, keys::colorizer);
|
||||||
if (need_scaling_)
|
if (colorizer)
|
||||||
{
|
{
|
||||||
image_type data_out(width_, height_);
|
colorizer->colorize(colorized, data_in, nodata_, feature_);
|
||||||
scale_image_agg(data_out, data_in, method_, scale_x_, scale_y_, 0.0, 0.0, filter_factor_);
|
|
||||||
if (colorizer) colorizer->colorize(dst, data_out, nodata_, feature_);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (colorizer) colorizer->colorize(dst, data_in, nodata_, feature_);
|
// TODO: Apply some decent auto colorization...
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (need_scaling_)
|
||||||
|
{
|
||||||
|
image_rgba8 scaled(width_, height_);
|
||||||
|
scale_image_agg(scaled, colorized, method_, scale_x_, scale_y_, 0.0, 0.0, filter_factor_);
|
||||||
|
premultiply_alpha(scaled);
|
||||||
|
composite_(scaled, comp_op_, opacity_, start_x_, start_y_);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
premultiply_alpha(colorized);
|
||||||
|
composite_(colorized, comp_op_, opacity_, start_x_, start_y_);
|
||||||
}
|
}
|
||||||
premultiply_alpha(dst);
|
|
||||||
composite_(dst, comp_op_, opacity_, start_x_, start_y_);
|
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
int start_x_;
|
int start_x_;
|
||||||
|
@ -164,15 +172,21 @@ struct image_warp_dispatcher
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void operator() (T const& data_in) const
|
void operator() (T const& data_in) const
|
||||||
{
|
{
|
||||||
using image_type = T;
|
image_rgba8 colorized(data_in.width(), data_in.height());
|
||||||
image_type data_out(width_, height_);
|
|
||||||
if (nodata_) data_out.set(*nodata_);
|
|
||||||
warp_image(data_out, data_in, prj_trans_, target_ext_, source_ext_, offset_x_, offset_y_, mesh_size_, scaling_method_, filter_factor_);
|
|
||||||
image_rgba8 dst(width_, height_);
|
|
||||||
raster_colorizer_ptr colorizer = get<raster_colorizer_ptr>(sym_, keys::colorizer);
|
raster_colorizer_ptr colorizer = get<raster_colorizer_ptr>(sym_, keys::colorizer);
|
||||||
if (colorizer) colorizer->colorize(dst, data_out, nodata_, feature_);
|
if (colorizer)
|
||||||
premultiply_alpha(dst);
|
{
|
||||||
composite_(dst, comp_op_, opacity_, start_x_, start_y_);
|
colorizer->colorize(colorized, data_in, nodata_, feature_);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// TODO: Apply some decent auto colorization...
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
image_rgba8 warped(width_, height_);
|
||||||
|
warp_image(warped, colorized, prj_trans_, target_ext_, source_ext_, offset_x_, offset_y_, mesh_size_, scaling_method_, filter_factor_);
|
||||||
|
premultiply_alpha(warped);
|
||||||
|
composite_(warped, comp_op_, opacity_, start_x_, start_y_);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
proj_transform const& prj_trans_;
|
proj_transform const& prj_trans_;
|
||||||
|
|
Loading…
Reference in a new issue