このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
パッケージ:matlab.net.http.io
スーパークラス:matlab.net.http.io.ContentConsumer
HTTP ペイロードのイメージ データのコンシューマー
このコンシューマーは Web からイメージ データを読み取り、それを MATLAB®イメージ データに変換します。結果は、適用先のResponseMessage
のBody
プロパティに格納します。RequestMessage.send
でコンシューマーとして直接指定され、コンシューマーが指定されていないときに既定のsend
メソッドによって提供される同じ機能をイメージ コンテンツ タイプに対して提供します。メッセージの Content-Type に基づいて、変換済みのイメージ、考えられるカラーマップおよびアルファ チャネルをBody.Data
に保存します。応答のイメージ データの変換の詳細については、HTTP データ型の変換のimage/*
Content-Types の説明を参照してください。
このコンシューマーが受け入れるデータは,応答メッセージのヘッダーや,要求のURIに含まれるファイル名の拡張子 (存在する場合) に基づいて形式を特定できるデータのみです。想定される形式をFormat
プロパティに指定することで、この動作をオーバーライドできます。
このコンシューマーは、データを関数imread
の戻り値に記述されている形式のいずれかの MATLAB イメージとして返します。元のデータを変換せずにファイルに格納するには、FileConsumer
を使用します。
matlab.net.http.io.ImageConsumer
クラスはhandle
クラスです。
consumer = ImageConsumer
は、HTTP イメージのコンシューマーを構築します。
consumer = ImageConsumer(
は、特定の形式を使用してfmt
)ImageConsumer
を構築します。
consumer = ImageConsumer(___,
は、応答データを変換するためにarg1,...,argn
)imread
によって使用される追加の引数を渡します。
Info
—イメージ情報関数imfinfo
に必要なイメージ情報。構造体として指定します。MATLAB は、変換の成功後にのみこのプロパティを設定します。この構造体のFilename
フィールドは空です。
GetAccess |
public
|
SetAccess |
private
|
PartialData
—部分イメージ データ部分イメージ データ。uint16
として指定します。変換に失敗したり、転送が中断された場合、MATLAB ではPartialData
が、uint8
ベクトルである受信した生データに設定されます。転送中または成功した場合、PartialData
にはデータが含まれない場合があります。
GetAccess |
public
|
SetAccess |
private
|
Format
—イメージ形式イメージ形式。string または文字ベクトルとして指定します。このコンシューマーは、関数imformats
の EXT 列で指定された形式のいずれでもないメッセージを拒否します。このプロパティの既定値は空であり、応答の Content-Type フィールドまたは Content-Disposition フィールドのファイル名の拡張子、または要求の URI から形式を派生させようとします。このコンシューマーに特定の形式を使用してデータを処理するよう強制する場合は、このコンシューマーをRequestMessage.send
メソッドに適用する前にこのプロパティを設定します。
サーバーによって形式が適切に示されていない場合は、このプロパティを正しい形式に設定します。
GetAccess |
public
|
SetAccess |
public
|
AllocationLength
—推奨されるバッファー サイズuint64
ContentLength
—想定されるペイロードの長さuint64
|空想定されるペイロードの長さ。uint64
として指定されます。このプロパティは通常、Header
プロパティにおけるmatlab.net.http.field.ContentLengthField
のValue
プロパティになります。
ContentLength
が空の場合、長さは不明です。ペイロードはputData(uint8.empty)
が呼び出された時点で終了します。
このプロパティは、サブクラスでデータの長さを確認できるように、initialize
を呼び出す前に MATLAB で設定されます。
このContentConsumer
が最上位のコンシューマーのデリゲートである場合、ContentLength
の値が最上位のコンシューマーのContentLength
と異なる値になることがあります。
例:numel(someData)
。ここで、someData
はuint8
型です。
GetAccess |
public
|
SetAccess |
public
|
ContentType
—ペイロードのメディア タイプmatlab.net.http.MediaType
|空ペイロードのメディア タイプ。matlab.net.http.MediaType
オブジェクトとして指定します。このプロパティは通常、Header
プロパティにおけるmatlab.net.http.field.ContentTypeField
のValue
プロパティになります。ContentType
プロパティが空の場合、ContentTypeField
は空または存在しません。
このプロパティは、サブクラスでMediaType
を確認できるように、initialize
を呼び出す前に MATLAB で設定されます。データから別のMediaType
であることがわかった場合は、サブクラスでこのプロパティを設定できます。
この値は、転送の終了時に MATLAB によってResponse.Body.ContentType
プロパティにコピーされます。
例:'application/octet-stream'
GetAccess |
public
|
SetAccess |
public
|
Header
—現在処理中のペイロードのヘッダーmatlab.net.http.HeaderField
現在処理中のペイロードのヘッダー。matlab.net.http.HeaderField
オブジェクトとして指定されます。
コンシューマーは、このヘッダーを使用して、送られてくるペイロードの処理方法を決定します。最上位のコンシューマーの場合、この値はResponse.Header
と同じになります。デリゲートの場合は値が異なることがあります。たとえば、MultipartConsumer
で処理されるマルチパート メッセージの場合は、そのデリゲートで処理中のパートのヘッダーになります。デリゲートは引き続きResponse.Header
で元のメッセージのヘッダーを確認できます。
このプロパティは、サブクラスで利用できるように、initialize
を呼び出す前に MATLAB で設定されます。
GetAccess |
public
|
SetAccess |
public
|
Request
—送信が完了したRequestMessage
matlab.net.http.RequestMessage
送信が完了したRequestMessage
。matlab.net.http.RequestMessage
オブジェクトとして指定します。これは、すべてのリダイレクトが完了した最終的なRequestMessage
であり、send
メソッドからのcompletedrequest
戻り値です。
このプロパティは、サブクラスで利用できるように、initialize
を呼び出す前に MATLAB で設定されます。
GetAccess |
public
|
SetAccess |
public
|
Response
—処理中のResponseMessage
matlab.net.http.ResponseMessage
処理中のResponseMessage
。matlab.net.http.ResponseMessage
オブジェクトとして指定します。
Response
プロパティは、initialize
を呼び出す前に MATLAB で設定されます。この値は、ヘッダーの受信まで完了し、ペイロードを受信する前のResponseMessage
になります。応答メッセージの処理の開始時 (マルチパート メッセージの場合はパートの開始時) に、ResponseMesssage.Body
プロパティは、Data
プロパティとPayload
プロパティが空のMessageBody
オブジェクトになります。受信したデータを格納するために、コンシューマーはデータ転送中にResponse
プロパティとMessageBody.Data
プロパティを変更できます。通常、コンシューマーはデータセットResponse.Body.Data
を処理してから処理済みのペイロードに格納しますが、これは必須ではありません。転送が完了すると、このResponse
が MATLAB からsend
の呼び出し元に返されます。Response
のHeader
やStatusLine
などの他のプロパティは、コンシューマーで変更しないでください。これらを変更した場合、その変更がsend
の呼び出し元に返されます。
Response.Body.Payload
プロパティは転送中は空であり、コンシューマーで変更してはなりません。HTTPOptions.SavePayload
プロパティが設定されると、次に MATLAB は、メッセージまたはパートの転送終了時 (putData(uint8.empty)
の呼び出し後)、または例外の発生時に、受信したペイロードにPayload
を設定します。
メッセージの処理中にコンシューマーで例外が発生した場合は、MATLAB からHTTPException
オブジェクトがスローされます。History
プロパティにはこのResponse
値が含まれます。
コンシューマーがマルチパート メッセージのパートを処理するデリゲートの場合、Response.Header
にメッセージ全体のヘッダーが格納され、各パートのContentConsumer
を呼び出す前にResponse.Body
のPayload
プロパティとData
プロパティがクリアされます。各パートの最後で、元の応答のBody.Data
にあるResponseMessage
オブジェクトの配列の末尾に、このオブジェクトのHeader
およびこのプロパティのBody
を含む、新しいResponseMessage
が追加されます。次のデリゲートでは、前のデリゲートのMessageBody
ではなく空のMessageBody
を含む新規のResponse
が確認されます。
GetAccess |
public
|
SetAccess |
public
|
Dependent |
true
|
URI
—処理中の要求の送信先matlab.net.URI
処理中の要求の送信先。matlab.net.URI
オブジェクトとして指定されます。この値は、send
で決定される元の送信先 URI の値になります。プロキシの URI やリダイレクト後の最終的な URI ではありません。
このプロパティは、サブクラスで利用できるように、initialize
を呼び出す前に MATLAB で設定されます。
GetAccess |
public
|
SetAccess |
public
|
AppendFcn
—データを追加するためにputData
で呼び出される関数データを追加するためにputData
メソッドで呼び出される関数。関数ハンドルとして指定されます。このクラスのputData
メソッドは、data
引数で受け取ったデータを応答メッセージの既存のデータに追加するために関数AppendFcn
を呼び出します。この関数のシグネチャは次のとおりでなければなりません。
AppendFcn(consumer,newdata)
newdata
は、consumer.Response.Body.Data
の配列に追加されるデータです。このメソッドは、Data
の新しい長さに合わせてconsumer.CurrentLength
を更新する必要があります。newdata
が空の場合はストリームの末尾を示し、関数によりResponse.Body.Data
が最終的な値に更新されます。
既定の動作では、このプロパティが空の場合、Data
を任意の値の配列として扱う、関数horzcat
に対応した内部関数が使用されます。この関数では、スペースを事前に割り当てることで効率的にnewdata
が追加され、格納されたデータの実際の長さがCurrentLength
に反映されます。メッセージの最後に、Response.Body.Data
がCurrentLength
の値までで切り捨てられます。
horzcat
が追加処理に適さない場合は、このプロパティをサブクラスで変更できます。たとえば、StringConsumer
でスカラー string を作成する場合は、string への追加に関数horzcat
ではなく関数plus
を使用することがあります。
データを追加するContentConsumer.putData
を呼び出さない場合やデータを追加する際のhorzcat
の動作に問題がない場合は、サブクラスでこのプロパティを無視することができます。
例:@customAppend
。@customAppend
はコンシューマーによって定義されます。
GetAccess |
protected
|
SetAccess |
protected
|
CurrentDelegate
—このコンシューマーによるデリゲート先のContentConsumer
matlab.net.http.io.ContentConsumer
|[]
このコンシューマーによるデリゲート先のContentConsumer
。matlab.net.http.io.ContentConsumer
オブジェクトとして指定します。呼び出し元のコンシューマー (デリゲーター) のdelegateTo
メソッドによってCurrentDelegate
プロパティが設定されます。現在のデリゲーションがない場合、値は[]
です。
MATLAB はinitialize
を呼び出す前にCurrentDelegate
を[]
に設定します。
GetAccess |
protected
|
SetAccess |
protected
|
CurrentLength
—Response.Body.Data
の現在のデータの長さuint64.empty
(既定値) |uint64
Response.Body.Data
プロパティの現在のデータの長さ。uint64
として指定されます。
このプロパティは、Response.Body.Data
に事前に割り当てられたサイズが現在格納されている実際のデータの量よりも大きい場合に、格納されているデータの長さを示すために使用されます。このプロパティが空の場合は、すべてのResponse.Body.Data
にデータが格納されているか、ContentConsumer
サブクラスでResponse.Body.Data
に格納する以外の何らかの方法でデータが破棄されていることを示します。
このプロパティは、この基底クラスのputData
メソッドで、AppendFcn
プロパティが空の場合に使用および設定されます。putData
を呼び出すサブクラスで既に格納されているデータを確認したり、AppendFcn
の任意の実装でResponse.Body.Data
に結果を反映したりするのに使用できます。
putData
を使用するサブクラスでは、このプロパティを変更してデータが格納されるバッファーの位置をリセットすることもできます。たとえば、既定の関数AppendFcn
を使用している場合、putData
の呼び出しごとにすべてのResponse.Body.Data
を処理するサブクラスで元のデータが不要になったときは、CurrentLength
プロパティを 1 にリセットすることで次のputData
の呼び出し時に新しいデータでバッファーを上書きできます。新しいデータの末尾を越えてバッファーの要素をクリアする必要はありません。
putData
を呼び出さないサブクラスでは、このプロパティを独自のデータの追跡に使用できます。使用しない場合は未設定 (空) のままにしておいてかまいません。ここで設定できる値に関して、MATLAB にはいかなる制約もありません。また、この値は、既定のAppendFcn
でデータの次のバッファーを格納する位置とメッセージの末尾のデータを切り捨てる位置を特定するためにのみ使用され、それ以外の目的には使用されません。データが切り捨てられないようにするには、putData(uint8.empty)
の最後の呼び出しの前にこのプロパティを空に設定します。
このプロパティは、initialize
の各呼び出しの前に MATLAB で空に設定されます。
GetAccess |
protected
|
SetAccess |
protected
|
MyDelegator
—このコンシューマーのデリゲート元のContentConsumer
matlab.net.http.io.ContentConsumer
|空このコンシューマーのデリゲート元のContentConsumer
。matlab.net.http.io.ContentConsumer
オブジェクトとして指定されます。このコンシューマーがGenericConsumer
やMultipartConsumer
などの別のコンシューマーから呼び出されたデリゲートである場合、これは呼び出し側のコンシューマーを示します。send
の呼び出しで指定された最上位のコンシューマーの場合は空になります。
デリゲートは、このプロパティを使用してデリゲーターのプロパティにアクセスし、デリゲート元のコンシューマーなどを確認できます。
GetAccess |
protected
|
SetAccess |
protected
|
initialize |
HTTP メッセージの新しいイメージのために ImageConsumer を準備 |
start |
ContentConsumer への HTTP データ転送の開始 |
putData |
ImageConsumer のデータを保存 |
delegateTo |
別のコンシューマーへのデリゲート |
ResponseMessage
|RequestMessage
|MessageBody
|matlab.net.URI
|ContentConsumer
|imfinfo
|imread
|imformats
|FileConsumer
|ImageProvider
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select:.
Selectweb siteYou can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.