GpEncoderParameter type

One parameter of an image encoder: an identifier, a type, and a list of values.

Encoder parameters tell an encoder how to write a picture, for instance the quality of a JPEG. Image.GetEncoderParameterList returns the parameters an encoder accepts, and Image.Save takes an array of them. The identifiers come from the functions of ImageCodec. The type mirrors the GDI+ EncoderParameter structure. It is 28 bytes long in a 32-bit program and 32 bytes in a 64-bit one.

Fields

Field Type Meaning
Guid UUID The identifier of the parameter, such as the value of EncoderQuality( ).

The count, the type and the address of the values are kept in fields that begin with an underscore (_count, _type, _address), which a program sets to describe values it supplies. They are read through the properties below.

Properties

Type, Count

Syntax: t = param.Type

Syntax: n = param.Count

Type is the GpEncoderParameterValueType of the values: byte, ASCII, short, long, rational, long range, rational range, undefined or pointer. Count is the number of values.

IsASCII, IsByte, IsShort, IsLong, IsRational, IsLongRange, IsRationalRange, IsBinary, IsUndefined

Syntax: b = param.IsLong

Each is True when Type is the type its name gives. IsBinary is for the pointer type. IsUndefined is True for the undefined type and for a type number that is out of range.

ASCII, Byte, Short, Long, Rational, Binary

Syntax: v = param.Long( index )

index
required The number of the value, from 1 to Count.

Return the value with that number, or 0 (an empty string for ASCII) when the parameter is not of that type. Byte returns an Integer and Short a Long, so that the unsigned values fit. Long returns a LongLong for the same reason. Rational returns the quotient of the two numbers of the pair as a Double. Binary returns the pointer.

LongRange, RationalRange

Syntax: v = param.LongRange( index )

Return a range as an array of two values with the lower bound 1: two LongLong values for LongRange, and the two quotients as Double values for RationalRange.

AsDouble

Syntax: v = param.AsDouble( index )

Returns a byte, short, long or rational value as a Double.

Methods

GetRational, GetLongRange, GetRationalRange

Syntax: param.GetRational( index, num, denom )

Syntax: param.GetLongRange( index, from, to )

Syntax: param.GetRationalRange( index, values( ) )

Read a rational as its numerator and denominator, a long range as its two ends, and a rational range as an array of its four numbers (lower bound 1), without dividing. All the numbers are LongLong values.

Dim user As GdiPlusUser = GdiPlusUser()

Dim qualities(0 To 1) As Long
qualities(0) = 70
qualities(1) = 80

Dim ep As GpEncoderParameter
ep.Guid = EncoderQuality()
ep._count = 2
ep._type = EncoderParameterValueTypeLong
ep._address = VarPtr(qualities(0))

Debug.Print ep.Count & " " & ep.Type & " " & ep.IsLong & " " & ep.IsByte
Debug.Print ep.Long(1) & " " & ep.Long(2) & " " & ep.AsDouble(2)
Debug.Print ep.Short(1)                          ' not a short parameter
' Output:
' 2 4 True False
' 70 80 80
' 0

See Also