IDLnetJPIP::GetData

Use this method to stream image data from a remote JPIP server, or to fetch any portion of the image. Whether you use this method in the asynchronous or synchronous mode, it does not return until it retrieves and locally decompresses all of the requested image data from the remote server.

Prior to calling GetData,you must set the SERVER_NAME property and call the Open method. IDL will throw an error if you do not call the Open method prior to calling GetData. You can call GetData multiple times to retrieve various portions of the image.

GetData has two modes of operation: asynchronous and synchronous. By default GetData operates in the asynchronous mode. See the SYNCHRONOUS keyword for details.

In the asynchronous mode GetData can make two different callbacks. The first callback provides progressive image updates to the user. The second callback provides status updates to the user. Both callbacks provide a way to cancel the GetData request.

Note: This method will throw an error if there is a failure. Use a catch statement to trap errors.

Syntax

Result = Obj->[IDLnetJPIP::]GetData( [, COMPONENT=value] [, DISCARD_LEVELS=value] [, INTERVAL=value][, MAX_LAYERS=value] [, N_COMPONENTS=value] [, ORDER=value] [, REGION=value] [, SYNCHRONOUS=value] )

Return Value

An array with two or three dimensions containing the image data streamed from the remote JPIP server. Dimensions of the result are: [3, Width, Height] if three components were requested or [Width, Height] if one component was requested.

The data type of the result is automatically determined using the bit-depth and signed properties of the returned components. For bit-depths <= 8, the result will be of type byte. For bit-depths >= 9 and <= 16, the result will be of type integer or uint. Components with differing bit-depths are not supported. Components which are a mix of signed and unsigned data are not supported.

Arguments

None

Keywords

COMPONENT

This keyword is optional integer input. Set this keyword to the desired starting component to be returned. The default is 0. The number of components can be determined by checking the value of the N_COMPONENTS property.

DISCARD_LEVELS

This keyword is optional integer input. Set this keyword to the level desired. The default is 0 which means no data will be discarded. For example, if the requested region has the dimensions of 1024 x 1024 and this keyword is 0, the returned data will be 1024 x 1024. If the requested region has the dimensions of 1024 x 1024 and this keyword is 1, the returned data will be 512 x 512. If the requested region has the dimensions of 1024 x 1024 and the discard level is 2 then the returned data will be 256 x 256.

The number of discard levels can be determined by checking the value of the N_LEVELS property.

INTERVAL

This keyword is an integer and optional. This keyword, in milliseconds, determines how frequently the progressive callback function is called. The default value is 1000 (1 second). To receive progressive callbacks, you must set the PROGRESSIVE_CALLBACK_FUNCTION property. The progressive callback function is called when the interval elapses and there is new data available. If the interval elapses and no new data is available, IDL does not call the progressive callback function. If the SYNCHRONOUS keyword is set,IDL will not make callbacks.

MAX_LAYERS

This keyword is optional integer input. Set this keyword to the highest quality layer desired. The default is the value of the N_LAYERS property, which means IDL combines all of the available layers. For example, when the MAX_LAYERS keyword is 1 then IDL returns only the data from the first layer. When the MAX_LAYERS keyword is 3, then IDL combines the data from the first, second, and third layers to form the returned data.

You can determine the number of quality layers in a image by checking the value of the N_LAYERS property.

N_COMPONENTS

This keyword is and optional integer with possible values of either 1 or 3. The starting component is set by the COMPONENT keyword.

ORDER

This keyword is optional integer input. JPEG2000 images are stored in top-to-bottom order, while IDL usually assumes images are in bottom-to-top order. By default (ORDER = 0), GetData will automatically flip the JPEG2000 image data to match IDL's bottom-to-top order. Setting ORDER to a nonzero value will return the image data without doing a vertical flip.

REGION

Optional. Set this keyword to a four-element vector containing the rectangular region of the image to read. The region is specified as [StartX, StartY, Width, Height]. The region must lie with the image boundaries, otherwise IDL produces an error. If you do not set REGION, the StartX will be set to 0, StartY will be set to 0, Width will be set to the Image Width, and Height will be set to the Image Height.

SYNCHRONOUS

This keyword is an optional boolean input and defaults to 0. Set SYNCHRONOUS to 0 to operate GetData in asynchronous mode, and to 1 to operate in synchronous mode. Whether you use this method in the asynchronous or synchronous mode, it does not return until it retrieves and decompresses all of the requested image data from the server.

In the asynchronous mode, GetData can provide:

In the synchronous mode, GetData does not provide any of the above functionality (progressive callbacks, status callbacks, or ability to cancel a request).

Additional Information on GetData

Canceling a GetData

You can cancel GetData via the return value of the callback function. See the callback operation description, below, for details.

Status Callback Operation

The caller must set the STATUS_CALLBACK_FUNCTION property to receive status callbacks from this method. GetData only issues callbacks in the asynchronous mode. The callback is made to a PRO code function which takes two IDL variables as input parameters and returns an integer.

Pro Code Callback Prototype

Function Callback_Function_Name, StatusInfo, CallbackData

: :

: :

return vCancelFlag

Callback Prototype Details

Progressive Callback Operation

The caller must set the PROGRESSIVE_CALLBACK_FUNCTION property to receive progressive callbacks from this method. GetData only issues callbacks in the asynchronous mode. The callback is made to a PRO code function. The function takes two IDL variables as input parameters and returns an integer.

Pro Code Callback Prototype

Function Callback_Function_Name, ImageBuffer, CallbackData

: :

: :

return vCancelFlag

Callback Prototype Details

Version History

8.3

Introduced