The IImage interface is the basis of the Imaging Object Model.
interface
|
IImage
|
extends
|
IConfigurable
|
||
IEquatable<IImage>
|
|||||
IImageOps<IImage>
|
|||||
base of
|
Image
|
The Imaging Object Model can be used to generate image data from a variety of different input sources using transformations. All transformations, conversions, etc. are performed on-the-fly while an image is being read, scanline after scanline. This allows efficient processing of extremely large images, since buffers and temporary storage space is only necessary for a couple of scanlines.
Adjust the brightness and saturation of this image.
[OwnerReturn, OwnerThis]
|
||||
method
|
Adjust
(int32 brightness,
int32 saturation = 0)
|
|||
type
|
T
|
|||
params
|
brightness
|
[-1000..1000]
|
The adjustment factor for image brightness. | |
saturation
|
[-1000..1000]
|
The
adjustment
factor
for
image
saturation.
Defaults
to
0 .
|
||
returns
|
|
The resulting image. | ||
inherited
|
IImageOps.Adjust
|
See also:
Colors.AdjustThe image scanlines will be read using concurrent background tasks.
[OwnerReturn, OwnerThis]
|
||||
method
|
Background
()
|
|||
type
|
T
|
|||
returns
|
|
The resulting IImageReader object. | ||
inherited
|
IImageOps.Background
|
Returns an opaque grayscale image which pixel values are equal to the given pixel channel of this image.
[OwnerReturn, OwnerThis]
|
||||
method
|
ChannelToIntensity
(PixelChannel channel)
|
|||
type
|
T
|
|||
params
|
channel
|
The pixel channel. | ||
returns
|
|
The resulting image. | ||
inherited
|
IImageOps.ChannelToIntensity
|
Remarks:
Void pixels in this image will also be void in the resulting image.
See also:
IImageOps.IntensityToChannelReturns an image that represents a sub rectangle of this image.
[OwnerReturn, OwnerThis]
|
||||
method
|
Clip
(int32 x,
int32 y,
int32 width,
int32 height)
|
|||
type
|
T
|
|||
params
|
x
|
[>=0]
|
X-coordinate of top-left corner of rectangle. | |
y
|
[>=0]
|
Y-coordinate of top-left corner of rectangle. | ||
width
|
[>0]
|
Width of rectangle. | ||
height
|
[>0]
|
Height of rectangle. | ||
returns
|
|
The resulting image. | ||
inherited
|
IImageOps.Clip
|
Assumes the image holds a non-rectangular shape that is padded with a uniform color and replaces all padding pixels with void.
[OwnerReturn, OwnerThis]
|
||||
method
|
Crop
(int64 color = Colors.Black,
int32 skip = 1)
|
|||
type
|
T
|
|||
params
|
color
|
The padding pixel color (see Colors). Defaults to Black. | ||
skip
|
The
maximum
length
(in
pixels)
of
a
run
surrounded
by
void
pixels
that
will
be
interpreted
as
void,
too.
Defaults
to
1 .
|
|||
returns
|
|
The resulting image. | ||
inherited
|
IImageOps.Crop
|
Remarks:
Since
the
source
image
is
read
scanline
after
scanline,
cropping
is
performed
locally
for
each
scanline:
Beginning
at
the
left
and
right
image
borders,
all
pixels
having
the
same
color
as
the
color
parameter
are
replaced
with
void
until
a
consecutive
run
of
pixels
having
different
colors
is
found
(see
skip).
The
following
figures
illustrates
this:
Pixels
that
have
the
same
color
as
the
color
parameter
are
shown
as
'.'
characters,
all
others
are
indicated
with
X
:
+-----------------------------------------------------------------------+ |.......................................................................| |.......................................................................| |............................XXX........................................| |...........................XXXXX.......................................| |.........................XXXXXXX.......................................| |.......................XXXXXXXXX.......................................| |.....................XXXXXXXXXXX.......................................| |...................XXXXXXXXXXXXXX......................................| |.................XXXXXXXXXXXXXXXX......................................| |................XXXXXXXXXXXXXXXXX......................................| |...............XXXXXXXXXXXXXXXXXXX.....................................| |................XXXXXXXXXXXXXXXXXXX....................................| |.................XXXXXXXXXXXXXXXXXXXXX.................................| |...................XXXXXXXXXXXXXXXXXXXXXXX.....X.......................| |...............XXXXXXXXXX..XXXXXXXXXXXXXXXXXXXXXXXXXXX.................| |..........XXXXXXXXXXXX.......XXXXXXXXXXXXXXXXXXXXXXXXXXX...............| |.............XXXXXXX..........XXXXXXXXXXXXXXXXXXXXXXXXXX...............| |...............XXX.............XXXXXXXXXXXXXXXXXXXXXXXX................| |................................XXXXXXXXXXXXXXXXXXXXX..................| |................................XXXXXXXXXXXXXXXXX......................| |...................................XXXXXXX.............................| |.......................................................................| |.......................................................................| |.......................................................................| |.......................................................................| +-----------------------------------------------------------------------+The cropped image will look like this (whitespace represents void pixels):
+-----------------------------------------------------------------------+ | | | | | XXX | | XXXXX | | XXXXXXX | | XXXXXXXXX | | XXXXXXXXXXX | | XXXXXXXXXXXXXX | | XXXXXXXXXXXXXXXX | | XXXXXXXXXXXXXXXXX cropped because | | XXXXXXXXXXXXXXXXXXX of skipped pixels | | XXXXXXXXXXXXXXXXXXX | | | XXXXXXXXXXXXXXXXXXXXX V | | XXXXXXXXXXXXXXXXXXXXXXX | | XXXXXXXXXX..XXXXXXXXXXXXXXXXXXXXXXXXXXX | | XXXXXXXXXXXX.......XXXXXXXXXXXXXXXXXXXXXXXXXXX | | XXXXXXX..........XXXXXXXXXXXXXXXXXXXXXXXXXX | | XXX.............XXXXXXXXXXXXXXXXXXXXXXXX | | ^ XXXXXXXXXXXXXXXXXXXXX | | | XXXXXXXXXXXXXXXXX | | not reachable XXXXXXX | | from left or | | right border | | | | | +-----------------------------------------------------------------------+Cropping will not change the image size or modify the georeference.
Transform linear pixel values using a custom function.
[OwnerReturn, OwnerThis]
|
||||
method
|
Function
(string function,
PixelChannel channel = PixelChannel.Intensity)
|
|||
type
|
T
|
|||
params
|
function
|
[not-null]
|
A function expression (see GrammarRuleExpression) that consumes input linear pixel values in the range [0..1] and returns output linear pixel value in the range [0..1]. Output values are clamped (including infinities), not-a-number output values produce void pixels (see Void). | |
channel
|
The pixel channel the function shall be applied to. If Void, no transformation will be performed. Defaults to Intensity. | |||
returns
|
|
The
resulting
image
or
this
if
channel
is
Void.
|
||
inherited
|
IImageOps.Function
|
Remarks:
The given function is evaluated on linear pixel values, that is after raw pixels have been translated to normalized pixel values (see SetRange) and after gamma correction has been applied (see SetGamma). The expression may use all members of the default Tinman script (see Tinman). The following arguments are available to the function expression:
raw
lin
A,
B,
C,
D,
E,
F
lin = pow(raw * A + B, C) raw = pow(lin, D) * E + F D = 1 / C E = 1 / A F = -B / Awhere
raw
is
the
raw
pixel
value
that
is
actually
stored
in
the
source
image
(e.g.
[0..255]
for
8-bit
images)
and
lin
is
the
linear
pixel
value
that
is
stored
in
the
image
scanline
buffer
(see
Scanline).
A
and
B
represent
the
transformation
from
raw
pixel
values
to
normalized
pixel
values
(see
SetRange);
C
is
the
exponent
that
best
approximates
the
performed
gamma
correction
(see
SetGamma).
Returns an image that has a single pixel channel (see channel parameter), initialized to the grayscale intensities of this image. All other pixel channels are initialized to their respective default values (see PixelChannel).
[OwnerReturn, OwnerThis]
|
||||
method
|
IntensityToChannel
(PixelChannel channel)
|
|||
type
|
T
|
|||
params
|
channel
|
The pixel channel. | ||
returns
|
|
The resulting image. | ||
inherited
|
IImageOps.IntensityToChannel
|
Remarks:
Void pixels in this image will also be void in the resulting image.
See also:
IImageOps.ChannelToIntensityReplaces a pixel channel of the given image with the grayscale intensities of this image.
[OwnerReturn, OwnerThis]
|
||||
method
|
IntensityToChannel
(PixelChannel channel,
[Owner]
T image)
|
|||
type
|
T
|
|||
params
|
channel
|
The pixel channel to replace. | ||
image
|
[not-null]
|
The image which pixel channel is to be replaced. | ||
returns
|
|
The resulting image. | ||
inherited
|
IImageOps.IntensityToChannel
|
Remarks:
Void pixels in the other image are ignored (i.e. the original pixel remains unchanged). Void pixels in this image are preserved (i.e. the other pixel is ignored).
See also:
PixelChannelInverts the given pixel channel.
[OwnerReturn, OwnerThis]
|
||||
method
|
Invert
(PixelChannel channel)
|
|||
type
|
T
|
|||
params
|
channel
|
The pixel channel. | ||
returns
|
|
The resulting image. | ||
inherited
|
IImageOps.Invert
|
Remarks:
The Void pixel channel cannot be inverted. The method will do nothing in this case.
Combines
this
image
(first
)
with
the
given
one
(second
)
using
the
specified
color
operation
(see
ColorOp).
[OwnerReturn, OwnerThis]
|
||||
method
|
Op
([Owner]
T other,
ColorOp colorOp)
|
|||
type
|
T
|
|||
params
|
other
|
[not-null]
|
The other image. | |
colorOp
|
The color operation to apply. | |||
returns
|
|
The resulting image. | ||
inherited
|
IImageOps.Op
|
Pads this image by duplicating pixels at the borders.
[OwnerReturn, OwnerThis]
|
||||
method
|
Pad
(int32 amount = 1)
|
|||
type
|
T
|
|||
params
|
amount
|
[>=0]
|
The
pad
amount,
in
pixels.
Defaults
to
1 . |
|
returns
|
|
The resulting image. | ||
inherited
|
IImageOps.Pad
|
Remarks:
Padding can be used to reduce seams that will occur when tiled geodata is imported incrementally using on-the-fly projection. The correct solution would be to merge all geodata tiles into a dataset and then perform the projection on the whole geodata.
Creates an IImageReader object that reads the image data of this image.
[OwnerReturn]
|
||||
method
|
ReadImage
(ReadImageFlags flags = ReadImageFlags.Data)
|
|||
type
|
IImageReader
|
|||
params
|
flags
|
The read flags to use. Defaults to Data. | ||
returns
|
|
The IImageReader object. |
Exceptions:
Returns information about the image.
method
|
ReadImageInfo
(ReadImageFlags flags = ReadImageFlags.Info)
|
||
type
|
IImageInfo
|
||
params
|
flags
|
The read flags to use. Defaults to Info. | |
returns
|
|
An ImageInfo object that holds information about the image. |
Exceptions:
Reads this image as a texture.
[OwnerReturn]
|
||||
method
|
ReadTexture
(CubemapFace face = CubemapFace.NegZ,
TextureFormat format = null,
bool srgb = true)
|
|||
type
|
TexelBuffer
|
|||
params
|
face
|
The cubemap face to read. Set to NegZ for 2D textures. Defaults to NegZ. | ||
format
|
The
texture
format
to
use,
if
not
specified
by
the
file
format.
If
null ,
the
texture
format
will
be
determined
from
the
pixel
format
(see
For),
if
necessary.
Defaults
to
null .
|
|||
srgb
|
The
Srgb
flag
to
use
when
pixels
need
to
be
encoding
into
texels.
Will
be
ignored
if
the
file
format
already
contains
encoded
texels.
Defaults
to
true .
|
|||
returns
|
The
read
texture
or
null
if
the
given
cubemap
face
does
not
exit. |
Returns an image that represents a scaled version of this image.
[OwnerReturn, OwnerThis]
|
||||
method
|
Scale
(int32 width,
int32 height,
InterpolationMode mode = InterpolationMode.UniformB)
|
|||
type
|
T
|
|||
params
|
width
|
[>0]
|
Width of the scaled image. | |
height
|
[>0]
|
Height of the scaled image. | ||
mode
|
The interpolation mode to use for magnification. Defaults to UniformB. | |||
returns
|
|
The resulting image. | ||
inherited
|
IImageOps.Scale
|
Updates the value of Coverage, without modifying the image content.
[OwnerReturn, OwnerThis]
|
||||
method
|
SetCoverage
(PixelCoverage coverage)
|
|||
type
|
T
|
|||
params
|
coverage
|
The pixel coverage. | ||
returns
|
|
The resulting image. | ||
inherited
|
IImageOps.SetCoverage
|
Remarks:
To perform resampling between pixel-is-area and pixel-is point, use ToCoverage.
Updates the value of Gamma.
[OwnerReturn, OwnerThis]
|
||||
method
|
SetGamma
(float64 gamma)
|
|||
type
|
T
|
|||
params
|
gamma
|
The gamma correction. | ||
returns
|
|
The resulting image. | ||
inherited
|
IImageOps.SetGamma
|
Updates the value of Georef, without modifying the image content.
[OwnerReturn, OwnerThis]
|
||||
method
|
SetGeoref
(Raster georef)
|
|||
type
|
T
|
|||
params
|
georef
|
The
georeferencing
information
or
null . |
||
returns
|
|
The resulting image. | ||
inherited
|
IImageOps.SetGeoref
|
Updates the value of Layer, without modifying the image content.
[OwnerReturn, OwnerThis]
|
||||
method
|
SetLayer
(HeightmapLayer layer,
PixelFormat format = PixelFormat.Unknown)
|
|||
type
|
T
|
|||
params
|
layer
|
The heightmap layer. | ||
format
|
The pixel format to use for choosing the heightmap format (see For). If Unknown, the pixel format of this image will be used. Defaults to Unknown. | |||
returns
|
|
The resulting image. | ||
inherited
|
IImageOps.SetLayer
|
Updates the value of NoData.
[OwnerReturn, OwnerThis]
|
||||
method
|
SetNoData
(float64 noData)
|
|||
type
|
T
|
|||
params
|
noData
|
The raw pixel value to map to void pixels (see NoData). | ||
returns
|
|
The resulting image. | ||
inherited
|
IImageOps.SetNoData
|
Updates the value of Range.
[OwnerReturn, OwnerThis]
|
||||
method
|
SetRange
(PixelRange range,
bool reinterpret = false)
|
|||
type
|
T
|
|||
params
|
range
|
The pixel value ranges to use for translating raw pixel values to normalized pixel values (see Range). | ||
reinterpret
|
true
to
leave
raw
pixels
values
unchanged
and
reinterpret
them
according
to
range,
false
to
normalize
raw
pixel
values
to
range.
Defaults
to
false .
|
|||
returns
|
|
The resulting image. | ||
inherited
|
IImageOps.SetRange
|
Performs sharpening on this image.
[OwnerReturn, OwnerThis]
|
||||
method
|
Sharpen
(IImage detail,
float32 scale = 1,
int32 downsample = 4)
|
|||
type
|
T
|
|||
params
|
detail
|
[not-null]
|
The high-resolution detail image to use for sharpening. | |
scale
|
[>=0]
|
Scale
factor
to
apply
to
difference
between
full
and
reduced
resolution.
Defaults
to
1 .
|
||
downsample
|
[>0]
|
The
detail
image
will
be
downsamples
by
this
factor.
The
difference
between
the
full
and
reduced
resolutions
will
be
used
to
sharpen
this
image.
Defaults
to
4 .
|
||
returns
|
|
The resulting image. | ||
inherited
|
IImageOps.Sharpen
|
Performs smoothing on this image.
[OwnerReturn, OwnerThis]
|
||||
method
|
Smooth
()
|
|||
type
|
T
|
|||
returns
|
|
The resulting image. | ||
inherited
|
IImageOps.Smooth
|
Remarks:
Image smoothing is performed using an Uniform-B spline.
Returns the configuration value that describes this object.
method
|
ToConfig
()
|
||
type
|
ConfigValue
|
||
returns
|
|
The configuration value. | |
inherited
|
IConfigurable.ToConfig
|
Remarks:
All configurable objects need to implement this interface. For simple types, it is preferable to delegate to ToValue.
The returned value may be of type Invalid, which means that this object in its current state cannot be described with the configuration API.
Before returning the resulting configuration value, Cache must be called on it, passing this IConfigurable object as parameter.
Transforms this image from the given pixel coverage semantic to the given one.
[OwnerReturn, OwnerThis]
|
||||
method
|
ToCoverage
(PixelCoverage target,
bool wrapX = false)
|
|||
type
|
T
|
|||
params
|
target
|
The pixel coverage semantic of the resulting image. | ||
wrapX
|
Is this image wrapped around the X-axis? | |||
returns
|
|
The resulting image. | ||
inherited
|
IImageOps.ToCoverage
|
Remarks:
If this image already has the given pixel coverage semantic, no transformation will be performed.
Outputs the pixels of this image via the given image writer.
[OwnerReturn]
|
||||
method
|
Write
([Owner]
IImageWriter writer,
bool geo = true)
|
|||
type
|
IOperation
|
|||
params
|
writer
|
[not-null]
|
The image writer to use. | |
geo
|
When
set
to
true ,
the
Geo
flag
will
be
used
when
reading
this
image,
iff
HasGeoref
also
returns
true .
Otherwise,
the
flag
will
not
be
used.
Defaults
to
true .
|
|||
returns
|
|
The background operation. |
Returns
an
operation
that
imports
image
pixels
into
a
PXB
image
file
or
a
rectangular
HGT
heightmap
dataset.
[OwnerReturn]
|
||||
method
|
ImportPixels
(Path path = null)
|
|||
type
|
IOperation
|
|||
params
|
path
|
Output
path
of
image
or
dataset
file.
If
null ,
the
file
path
of
input
will
be
used,
having
the
file
suffix
replaced
with
.pxb
resp.
.hgt .
Defaults
to
null .
|
||
returns
|
|
The import operation. |
Remarks:
The output format can be chosen by using the corresponding file suffix for the path parameter. If no path is given, a heightmap dataset will be created if the Layer of the input image has been set (i.e. it has a value other than None).
Returns
an
operation
that
projects
image
pixels
onto
a
cubemap
HGT
heightmap
dataset.
[OwnerReturn]
|
||||
method
|
ProjectPixels
([Owner]
IHeightmap output,
IMapProjectionFactory projection = null)
|
|||
type
|
IOperation
|
|||
params
|
output
|
[not-null]
|
The output heightmap dataset. | |
projection
|
The
map
projection
to
use.
If
null ,
the
projection
is
derived
from
available
georeferencing
information.
Defaults
to
null .
|
|||
returns
|
|
The operation. |
Outputs the pixels of this image to the given image file.
[OwnerReturn, OwnerThis]
|
||||
method
|
WriteFile
(Path imageFile)
|
|||
type
|
IOperation
|
|||
params
|
imageFile
|
[not-null]
|
The image file to write. | |
returns
|
|
The background operation. |
Remarks:
The image file format will be determined from the file suffix (see CanWrite).