Main Content

matlab.net.http.io.ImageProvider class

Package:matlab.net.http.io
Superclasses:matlab.net.http.io.ContentProvider

ContentProvider to sendMATLABimage data

Description

使用一个ImageProviderobject to convert and send MATLAB®image data in an HTTPRequestMessage. This provider converts the data to one of the standard types, as specified by the Content-Type of the request or properties in this object. This provider also converts an image file to a different format.

By default, if you specify an image Content-Type in theRequestMessage, for example"image/jpeg"andRequestMessage.Bodyis aMessageBodycontaining your image data, then MATLAB assumes thatMessageBody.Datais image data and tries to convert it appropriately. To control how your data is converted, use anImageProviderinRequestMessage.Body.

If theRequestMessagedoes not contain a Content-Type header field, then this provider adds the appropriate image Content-Type to the header. Otherwise, the header field is not modified and conversion is done as specified in the properties of this object, even if its value is inconsistent with the Content-Type field.

Thematlab.net.http.io.ImageProviderclass is ahandleclass.

Creation

Description

provider = ImageProvider(data,arg1,...,argN)creates a provider that converts MATLAB imagedatato the format specified byarg1,...,argN, setting theDataproperty todataand theArgumentsproperty toarg1,...,argN.

provider = ImageProvider(filename,arg1,...,argN)obtains the image data from the filefilenameand sends it in the format specified inarg1,...,argNor the Content-Type field, setting theFilenameproperty tofilename.

While this provider can convert a file in one format to data in another format, it is not designed to send an image file as is. To send a file without changing its type, use aFileProvider.

Properties

expand all

Public Properties

This is the value specified as the Data argument to the constructor, if any, or the data converted from thefilenameargument. Set this value to a string scalar or character vector before sending the message containing this provider.

If a subclass author wants to set this property before MATLAB calls thestartmethod, then set the value in thecompletemethod. If you change this property, then the change takes effect with the next call tostart.

Attributes:

GetAccess
public
SetAccess
public

Arguments to theimwritefunction, specified as a cell array. This is the value specified to the constructor containing a list of arguments as documented forimwrite, but omitting the image data and file name arguments.

Subclass authors can set this property before MATLAB callsstart, for example, incomplete. If you change these values, then the changes do not take effect until the next call tostart.

Attributes:

GetAccess
public
SetAccess
public
Dependent
true

Name of the file containing the image data, specified as a string. This is the value specified as thefilenameargument to the constructor, if any. It is read-only.

The format offilenameis derived from the file name extension, which might be different from thefmtargument inarg1,...,argNor the Content-Type in the message. This constructor syntax allows you to send an image file in one format to a server that expects it in a different format. However, some conversions are incompatible. For example, you cannot convert an RGB file like JPEG to a GIF format.

Attributes:

GetAccess
public
SetAccess
private

Header fields of the message or part, specified as a vector of one or morematlab.net.http.HeaderFieldobjects.

This property is only used by subclass authors. MATLAB sets this property before calling the provider'scompletemethod. For non-multipart messages, MATLAB initializes this property to the contents ofRequest.Header, minus anymatlab.net.http.field.GenericFieldsor empty-valued fields. TheContentProvideruses this property to add header fields that describe the data to be sent, or to add parameters to header fields already in the message. In a delegate for aMultipartProvider, MATLAB initializes this property to header fields that the delegating provider intends to insert for the part. Delegates can modify or change these fields.

Upon return from the provider'scompletemethod, if this not a multipart message, then MATLAB reads this property and merges its contents into the header ofRequest. Fields in thisHeaderwithNamesthat do not already appear inRequest.Headerare added to the end ofRequest.Header. If a field in thisHeaderhas aName这是一样的Request.Header, and both have nonemptyValuesthen:

  • If the one inRequest.Headeris aGenericFieldthen ignore the one inHeader.

  • If the one inRequest.Headeris not aGenericFieldthen replace it with the one inHeader.

If one or both of these has an emptyValuethen the field is removed fromRequest.Headerand it is not added as part of normal message completion.

If this is a delegate of aMultipartProviderthen the entire contents of thisHeaderis used as the header of the part. Multipart delegates must not assume thatRequest.Headercontains any fields pertaining to their ownHeader. A provider can determine whether it is a multipart delegate by checking whetherMyDelegatoris aMultipartProviderthough this test is unlikely to be needed.

MATLAB reads this property only on return from calling the provider'scompletemethod. Changes to this array are ignored once MATLAB callsstart.

Class authors should be aware that their subclasses might have added fields to thisHeader(in theircompletemethod) before callingcompletein their superclass. It is best to preserve such fields and not to add fields with the same names. However, adding a parameter to a field is permissible. For example, a superclass can add a charset parameter to an existing Content-Type field that does not already have one.

Attributes:

GetAccess
public
SetAccess
public

Indicate whether to force chunked transfer coding, specified as boolean. This property is of interest only to subclass authors, and is applicable only to providers that are not multipart delegates. Subclasses setForceChunkedto control whether contents should be sent using chunked transfer coding. Iffalse(default), MATLAB decides whether to send the contents chunked, based on whether it knows the content length at the time the message is ready to be sent:

  • If MATLAB knows the content length (which is the case if the message contains a Content-Length field, or if this provider'sexpectedContentLengthmethod returned a number), then MATLAB decides whether to send it chunked or not.

  • If MATLAB does not know the content length (no Content-Length field in the header andexpectedContentLengthreturned empty), then MATLAB always sends the message chunked.

IfForceChunkedistruethen MATLAB sends the message chunked regardless of whether it knows the content length, unless the known length is smaller than the chunk size. If this property istruethen the message must not contain a Content-Length field, because HTTP does not allow a chunked message to have a Content-Length field. However, you can still return a nonzero value in theexpectedContentLengthmethod if you want MATLAB to verify that you are returning the expected length of data.

When MATLAB chooses to send the message chunked, the size of each chunk is equal to the length of data returned bygetData.

MATLAB reads this value after calling thecompletemethod, before callingstart. It does not set this field.

Attributes:

GetAccess
public
SetAccess
public

Request message to send, specified as amatlab.net.http.RequestMessageobject.

This property is used only by subclass authors. TheRequestMessage.sendandRequestMessage.completemethods set this property to theRequestMessagein whoseBodythis provider has been placed, before calling any other methods in this provider, and before adding any additional header fields or validating the message. The provider can examine this message to see what was contained in the original request.

Delegates see the same value for this property as the delegator.ContentProviders应该意识到,如果他们的代表,他们呢are not necessarily providing the entire body of the request message, so they should not assume that header fields in this Request are pertinent to the data they are providing. Usually, delegates should ignore header fields in this request relevant to the data, such as Content-Type.

If the provider wishes to add any header fields to this message, or to modify existing ones, it should do so in itscompletemethod by adding those fields to theHeaderproperty. The caller ofcomplete(RequestMessageor a delegating provider) determines what to do with those fields.RequestMessage.sendandRequestMessage.completealways copy these fields to theHeaderof theRequestMessage. A delegating provider can copy the fields to its ownHeaderproperty or insert them into the message (as in the case ofMultipartProvider). For more information, see theHeaderproperty.

This property is read-only.

Attributes:

GetAccess public
SetAccess matlab.net.http.RequestMessage

Protected Properties

ContentProviderto which this provider is delegating, specified as amatlab.net.http.io.ContentProviderobject. This property is set in the calling provider (the delegator) by thedelegateTomethod to indicate the current delegated provider. If there is no current delegation, then the value is empty.

Thecompletemethods set this property to empty.

Attributes:

GetAccess
protected
SetAccess
protected

ContentProviderthat delegated to this provider, specified as amatlab.net.http.io.ContentProviderobject.

If aContentProviderdelegates responsibility for sending all or a portion of the message data to another provider, then this property identifies the delegating provider to the delegate. For example, aMultipartProviderdelegates parts of the message to other providers, so it inserts a handle to itself in each delegate. Otherwise,MyDelegatoris empty. ThedelegateTomethod sets this property in the delegate.

Attributes:

GetAccess
protected
SetAccess
protected

Methods

expand all

More About

expand all

Version History

Introduced in R2018a