36#ifndef VIGRAEXT_IMPEXALPHA_HXX
37#define VIGRAEXT_IMPEXALPHA_HXX
45#include "vigra/imageinfo.hxx"
46#include "vigra/impex.hxx"
47#include "vigra/impexbase.hxx"
57 template <
class ValueType,
70 "vigra::detail::read_image_band_and_alpha: expecting exactly one alpha band");
72 "vigra::detail::read_image_band_and_alpha: expecting exactly one image band");
74 const unsigned width(
decoder->getWidth());
75 const unsigned height(
decoder->getHeight());
76 const unsigned offset(
decoder->getOffset());
78 for (
unsigned y = 0
U; y != height; ++y)
82 const ValueType*
scanline0 =
static_cast<const ValueType*
>(
decoder->currentScanlineOfBand(0));
83 const ValueType*
scanline1 =
static_cast<const ValueType*
>(
decoder->currentScanlineOfBand(1));
106 template <
class ValueType,
119 "vigra::detail::read_image_bands_and_alpha: expecting exactly one alpha band");
121 "vigra::detail::read_image_bands_and_alpha: number of channels and image accessor do not match");
123 const unsigned width(
decoder->getWidth());
124 const unsigned height(
decoder->getHeight());
125 const unsigned offset(
decoder->getOffset());
138 for (
unsigned y = 0
U; y != height; ++y)
174 for (
unsigned y = 0
U; y != height; ++y)
218 template <
typename T>
292 vigra_fail(
"vigra::detail::importImageAlpha<scalar>: not reached");
354 vigra_fail(
"vigra::detail::importImageAlpha<scalar>: not reached");
484 typedef typename vigra::NumericTraits<ImageValueType>::isScalar
is_scalar;
501 image.first, image.second,
502 alpha.first, alpha.second);
507 template<
class ValueType,
520 typedef detail::RequiresExplicitCast<ValueType>
explicit_cast;
523 "vigra::detail::write_image_band_and_alpha: negative width");
525 "vigra::detail::write_image_band_and_alpha: negative height");
535 const unsigned offset(
encoder->getOffset());
543 for (
unsigned y = 0
U; y != height; ++y)
545 ValueType*
scanline0 =
static_cast<ValueType*
>(
encoder->currentScanlineOfBand(0));
546 ValueType*
scanline1 =
static_cast<ValueType*
>(
encoder->currentScanlineOfBand(1));
571 template<
class ValueType,
583 typedef detail::RequiresExplicitCast<ValueType>
explicit_cast;
586 "vigra::detail::write_image_bands_and_alpha: negative width");
588 "vigra::detail::write_image_bands_and_alpha: negative height");
599 const unsigned offset(
encoder->getOffset());
617 for (
unsigned y = 0
U; y != height; ++y)
653 for (
unsigned y = 0
U; y != height; ++y)
750 vigra_fail(
"vigra::detail::exportImageAlpha<scalar>: not reached");
793 vigra_fail(
"vigra::detail::exportImageAlpha<scalar>: not reached");
818 "exportImageAlpha(): file format does not support requested number of bands (color channels)");
867 vigra_fail(
"vigra::detail::exportImageAlpha<scalar>: not reached");
910 vigra_fail(
"vigra::detail::exportImageAlpha<non-scalar>: not reached");
1048 typedef typename vigra::NumericTraits<ImageValueType>::isScalar
is_scalar;
1057 catch (Encoder::TIFFCompressionException&)
1061 info.setCompression(
"");
1078 alpha.first, alpha.second,
doxygen_overloaded_function(template<... > void importImageAlpha) template< class ImageIterator
Read the image specified by the given vigra::ImageImportInfo object including its alpha channel.
class AlphaIterator class AlphaAccessor inline void importImageAlpha(const ImageImportInfo &import_info, ImageIterator image_iterator, ImageAccessor image_accessor, AlphaIterator alpha_iterator, AlphaAccessor alpha_accessor)
class AlphaIterator class AlphaAccessor inline void exportImageAlpha(ImageIterator image_upper_left, ImageIterator image_lower_right, ImageAccessor image_accessor, AlphaIterator alpha_upper_left, AlphaAccessor alpha_accessor, const ImageExportInfo &export_info)
void importImageAlpha(const ImageImportInfo &import_info, ImageIterator image_iterator, ImageAccessor image_accessor, AlphaIterator alpha_iterator, AlphaAccessor alpha_accessor, VigraTrueType)
void write_image_band_and_alpha(Encoder *encoder, ImageIterator image_upper_left, ImageIterator image_lower_right, ImageAccessor image_accessor, const ImageScaler &image_scaler, AlphaIterator alpha_upper_left, AlphaAccessor alpha_accessor, const AlphaScaler &alpha_scaler)
void read_image_band_and_alpha(Decoder *decoder, ImageIterator image_iterator, ImageAccessor image_accessor, AlphaIterator alpha_iterator, AlphaAccessor alpha_accessor, const AlphaScaler &alpha_scaler)
void write_image_bands_and_alpha(Encoder *encoder, ImageIterator image_upper_left, ImageIterator image_lower_right, ImageAccessor image_accessor, const ImageScaler &image_scaler, AlphaIterator alpha_upper_left, AlphaAccessor alpha_accessor, const AlphaScaler &alpha_scaler)
void read_image_bands_and_alpha(Decoder *decoder, ImageIterator image_iterator, ImageAccessor image_accessor, AlphaIterator alpha_iterator, AlphaAccessor alpha_accessor, const AlphaScaler &alpha_scaler)
void exportImageAlpha(ImageIterator image_upper_left, ImageIterator image_lower_right, ImageAccessor image_accessor, AlphaIterator alpha_upper_left, AlphaAccessor alpha_accessor, const ImageExportInfo &export_info, VigraTrueType)
double getMaxValForPixelType(const std::string &v)
Implementation of fast vector type with support of linear algebra operations Copyright (C) 2009 Lukáš...
std::vector< deghosting::BImagePtr > threshold(const std::vector< deghosting::FImagePtr > &inputImages, const double threshold, const uint16_t flags)
Threshold function used for creating alpha masks for images.
functions to manage ROI's