matlab.net.http.io.ImageConsumer Class
Namespace: matlab.net.http.io
Superclasses: matlab.net.http.io.ContentConsumer
Consumer for image data in HTTP payloads
Description
This consumer reads image data from the web and converts it to MATLAB® image data. It stores the result in the Body property of
the ResponseMessage to which it is applied. Specified directly as a consumer in
RequestMessage.send, it provides the same functionality for image content
types that is provided by the default send method when no consumer is
specified, saving the converted image, plus a possible colormap and alpha channel, in
Body.Data, based on the Content-Type of the message. For more
information on conversion of image data in a response, see the description for
image/* Content-Types in HTTP Data Type Conversion.
This consumer only accepts data for which it can determine a format based on headers in
the response message or the extension of the file name in the URI of the request (if any). You
can override this behavior by specifying the expected format in the
Format property.
This consumer returns the data as a MATLAB image in one of the formats described for the return value of the imread function. To store the original data in a file without converting it, use
a FileConsumer.
The matlab.net.http.io.ImageConsumer class is a handle class.
Creation
Description
consumer = ImageConsumer constructs a consumer for HTTP
images.
consumer = ImageConsumer( constructs an
fmt)ImageConsumer using the specified format.
consumer = ImageConsumer(___,
passes additional arguments used by arg1,...,argn)imread to convert the response
data.
Input Arguments
Image format, specified as a string or a character vector, which is accepted by
imread. This value overrides any format
specification in the message header. This constructor sets the
Format property to the value of
fmt.
Example: 'png'
One or more input arguments to the imread function, specified as valid argument types. Do not specify
filename or fmt arguments.
Example: 'PixelRegion',{[1 100],[4 500]}
Properties
Public Properties
Image information as required for the imfinfo function, specified as a structure. MATLAB sets this property only after a successful conversion. The
Filename field in this structure is empty.
Attributes:
GetAccess | public |
SetAccess | private |
Partial image data, specified as uint16. If the conversion
failed or the transfer was interrupted, then MATLAB sets PartialData to the raw received data, which is
a uint8 vector. PartialData might not contain
any data during a transfer or in successful cases.
Attributes:
GetAccess | public |
SetAccess | private |
Image format, specified as a string or character vector. This consumer rejects
messages whose format is not one of those specified in the EXT column of the imformats function. The default value of this property is empty, which
attempts to derive the format from the Content-Type field or the extension of the file
name in the Content-Disposition field of the response, or the URI of the request. If
you want to force this consumer to process the data using a specific format, set this
property before applying this consumer to a RequestMessage.send
method.
If the server does not properly indicate the format, set this property to the correct format.
Attributes:
GetAccess | public |
SetAccess | public |
Suggested buffer size, specified as uint64. MATLAB sets AllocationLength to the anticipated size of
buffers of data passed to putData.
The actual size might be smaller or larger. To improve performance, the consumer can use
this value to preallocate space to handle the data.
MATLAB sets this property before calling the start
method for the convenience of subclasses.
Attributes:
GetAccess | public |
SetAccess | public |
Expected length of the payload, specified as uint64. The property
normally is the Value property of the matlab.net.http.field.ContentLengthField in the Header
property.
If ContentLength is empty, then the length is not known. The
payload ends when putData(uint8.empty) is called.
MATLAB sets this property before calling initialize,
for the convenience of subclasses that might benefit from knowing the length of the
data.
If this ContentConsumer is a delegate of a top-level consumer, then the
value of ContentLength might be different from the
ContentLength value of the top-level consumer.
Example: numel(someData) where someData is type
uint8
Attributes:
GetAccess | public |
SetAccess | public |
Media type of payload, specified as a matlab.net.http.MediaType object. The
property normally is the Value property of the matlab.net.http.field.ContentTypeField
in the Header property. If the ContentType
property is empty, then the ContentTypeField is empty or
nonexistent.
MATLAB sets this property before calling initialize
for the convenience of subclasses that might want to examine the
MediaType. Subclasses can set this property if they determine from
the data that it is of a different MediaType.
At the end of the transfer, MATLAB copies this value into the Response.Body.ContentType
property.
Example: 'application/octet-stream'
Attributes:
GetAccess | public |
SetAccess | public |
Header of the payload currently being processed, specified as a matlab.net.http.HeaderField
object.
Consumers use this header to determine how to process the payload that is being sent
to them. For a top-level consumer, this value is the same as
Response.Header. For a delegate, the value might be different.
For example, in a multipart message processed by a MultipartConsumer, it
is the header of the part that this delegate is processing. The delegate can still
examine Response.Header for headers of the original message.
MATLAB sets this property before calling initialize,
for the convenience of subclasses.
Attributes:
GetAccess | public |
SetAccess | public |
The completed RequestMessage that was sent, specified as a matlab.net.http.RequestMessage object. This is the final RequestMessage after all redirections, which is the completedrequest return value from the send method.
MATLAB sets this property before calling initialize, for the convenience of subclasses.
Attributes:
GetAccess | public |
SetAccess | public |
The ResponseMessage being processed, specified as a matlab.net.http.ResponseMessage
object.
MATLAB sets the Response property before calling initialize.
The value is the ResponseMessage after headers have been received but
before receiving any payload. At the start of the response message processing (or the
start of a part for multipart messages), the ResponseMesssage.Body
property is a MessageBody object with empty
Data and Payload properties. To store
received data, consumers can modify the Response and
MessageBody.Data properties during data transfer. Usually,
consumers that process and then store data set Response.Body.Data
to their processed payload, though this is not required. At the completion of the
transfer, MATLAB returns this Response to the caller of send. Consumers
should not modify other Response properties, such as
Header or StatusLine, as those changes are
returned to the caller of send.
The Response.Body.Payload property is empty during the transfer
and consumers should not attempt to modify it. If the HTTPOptions.SavePayload property is
set, then MATLAB sets Payload to the received payload at the end of
the transfer of the message or the part (after the call to
putData(uint8.empty)) or when an exception occurs.
If an exception occurs in the consumer during message processing, then MATLAB throws an HTTPException object. The
History property contains this Response
value.
If the consumer is a delegate that is processing part of a multipart message, then
Response.Header contains the header of the whole message, and
the Payload and Data properties of
Response.Body are cleared before invoking the
ContentConsumer for each part. At the conclusion of each part, a new
ResponseMessage is added to the end of the array of
ResponseMessage objects in the original response's
Body.Data containing the Header from this
object and the Body from this property. The next delegate sees a
fresh Response with an empty MessageBody, not the
previous delegate's MessageBody.
Attributes:
GetAccess | public |
SetAccess | public |
Dependent | true |
Destination of the request being processed, specified as a matlab.net.URI object. This value is the original destination URI as determined by send. It is not the URI of a proxy or the final URI after redirections.
MATLAB sets this property before calling initialize, for the convenience of subclasses.
Attributes:
GetAccess | public |
SetAccess | public |
Protected Properties
Function, specified as a function handle, called by the putData
method to append additional data. The putData method in this class
calls the AppendFcn function to append data it receives in its
data argument to existing data in the response message. The
function must have the signature:
AppendFcn(consumer,newdata)
where newdata is the data to be appended to the array at
consumer.Response.Body.Data. It is the responsibility of this
method to update consumer.CurrentLength to reflect the new length
of Data. If newdata is empty, which indicates
the end of the stream, then the function should update
Response.Body.Data to its final value.
The default behavior, if this property is empty, uses an internal function that treats
Data as an array of arbitrary values supporting the
horzcat function. It efficiently adds
newdata by preallocating space, maintaining
CurrentLength to be the actual length of data stored. At the
end of the message, it truncates Response.Body.Data to
CurrentLength.
Subclasses can change this property if horzcat is not appropriate
for the append process. For example, when a StringConsumer builds a
scalar string, it would add to the string using the plus function
instead of horzcat.
Subclasses that do not invoke ContentConsumer.putData to append data,
or which are satisfied with horzcat behavior when appending data,
can ignore this property.
Example: @customAppend where @customAppend is
defined by the consumer
Attributes:
GetAccess | protected |
SetAccess | protected |
The ContentConsumer to which this consumer is delegating,
specified as a matlab.net.http.io.ContentConsumer object. The
delegateTo method of the calling consumer (the delegator)
sets the CurrentDelegate property. If there is no current delegation, then
the value is [].
MATLAB sets CurrentDelegate to
[] before calling
initialize.
Attributes:
GetAccess | protected |
SetAccess | protected |
Length of data currently in the Response.Body.Data property,
specified as uint64.
This property is used when Response.Body.Data has been
preallocated to a size larger than the actual amount of data currently stored, to
indicate the length of that stored data. If this property is empty, then it means that
all of Response.Body.Data contains the stored data or that a
ContentConsumer subclass is disposing of the data in some way other
than storing it in Response.Body.Data.
This property is used and set by the putData
method in this base class when the AppendFcn property is empty. It
is for the benefit of subclasses that call putData and want to examine
already-stored data, and/or any implementations of AppendFcn that
maintain results in Response.Body.Data.
Subclasses that use putData also can modify this property to reset
the position in the buffer where the data is stored. For example, when the default
AppendFcn function is used, a subclass that processes all of
Response.Body.Data on each call to putData
might no longer have a use for the original data, so it can reset the
CurrentLength property to 1 so that the next
putData call overwrites the buffer with new data. There is no need
to clear elements in the buffer past the end of the new data.
Subclasses that do not call putData can use this property to track
their own data, or can leave it unset (empty). MATLAB does not place any constraints on the value that can be set here
and does not use it for any purpose other than to determine where the default
AppendFcn should store the next buffer of data, and where to
truncate the data at the end of the message. Set this property to empty before the final
call to putData(uint8.empty) to prevent truncation of the data.
MATLAB sets this property to empty before each call to initialize.
Attributes:
GetAccess | protected |
SetAccess | protected |
The ContentConsumer that delegated to this consumer, specified as a
matlab.net.http.io.ContentConsumer object. If this consumer is a
delegate that was invoked by another consumer, such as a GenericConsumer
or MultipartConsumer, then this is the calling consumer. It is empty in a
top-level consumer specified in the call to send.
Delegates can use this property to access properties of their delegators, for example, to determine which consumer delegated to them.
Attributes:
GetAccess | protected |
SetAccess | protected |
Methods
initialize | Prepare ImageConsumer for new image in HTTP message |
start | Start HTTP data transfer to ContentConsumer |
putData | Save data for ImageConsumer |
delegateTo | Delegate to another consumer |
More About
Version History
Introduced in R2018a
See Also
ResponseMessage | RequestMessage | MessageBody | matlab.net.URI | ContentConsumer | imfinfo | imread | imformats | FileConsumer | ImageProvider
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleziona un sito web
Seleziona un sito web per visualizzare contenuto tradotto dove disponibile e vedere eventi e offerte locali. In base alla tua area geografica, ti consigliamo di selezionare: .
Puoi anche selezionare un sito web dal seguente elenco:
Come ottenere le migliori prestazioni del sito
Per ottenere le migliori prestazioni del sito, seleziona il sito cinese (in cinese o in inglese). I siti MathWorks per gli altri paesi non sono ottimizzati per essere visitati dalla tua area geografica.
Americhe
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
