私はImageResizer exampleに基づいている単純なAzure関数を構築しようとしていますが、Microsoft Cognitive Server Computer Vision APIを使用してサイズ変更を行います。私のAzureストレージ出力のBLOBは表示されません
私はAzure関数に移植したworking code for the Computer Vision APIを持っています。
すべてが正常に動作しているようです(エラーは表示されません)が、出力されたBLOBは保存されず、ストレージコンテナに表示されません。私が何をしているのか分からないのは、エラーがないからです。
マイAzureのストレージアカウントが 'thumbnailgenstorage' と呼ばれる
{
"bindings": [
{
"path": "originals/{name}",
"connection": "thumbnailgenstorage_STORAGE",
"name": "original",
"type": "blobTrigger",
"direction": "in"
},
{
"path": "thumbs/%rand-guid%",
"connection": "thumbnailgenstorage_STORAGE",
"type": "blob",
"name": "thumb",
"direction": "out"
}
],
"disabled": false
}
次のように
using System;
using System.Text;
using System.Net.Http;
using System.Net.Http.Headers;
public static void Run(Stream original, Stream thumb, TraceWriter log)
{
//log.Verbose($"C# Blob trigger function processed: {myBlob}. Dimensions");
string _apiKey = "PutYourComputerVisionApiKeyHere";
string _apiUrlBase = "https://api.projectoxford.ai/vision/v1.0/generateThumbnail";
string width = "100";
string height = "100";
bool smartcropping = true;
using (var httpClient = new HttpClient())
{
//setup HttpClient
httpClient.BaseAddress = new Uri(_apiUrlBase);
httpClient.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", _apiKey);
//setup data object
HttpContent content = new StreamContent(original);
content.Headers.ContentType = new MediaTypeWithQualityHeaderValue("application/octet-stream");
// Request parameters
var uri = $"{_apiUrlBase}?width={width}&height={height}&smartCropping={smartcropping}";
//make request
var response = httpClient.PostAsync(uri, content).Result;
//log result
log.Verbose($"Response: IsSucess={response.IsSuccessStatusCode}, Status={response.ReasonPhrase}");
//read response and write to output stream
thumb = new MemoryStream(response.Content.ReadAsByteArrayAsync().Result);
}
}
My機能JSONが続き、それが'originals'という名前の2個のコンテナを持っていると私のCSX(C#の機能コード)がありますおよび'thumbs'。ストレージアカウントのキーはKGdcO+hjvARQvSwd2rfmdc+rrAsK0tA5xpE4RVNmXZgExCE+Cyk4q0nSiulDwvRHrSAkYjyjVezwdaeLCIb53g==
です。
私はこれを理解するために私のキーを使用するのがとても嬉しいです! :)
です。私はeth出力BLOBに正しく書いていたのかどうかはわかりません。これはうまくいくようです: '//レスポンスの読み取りと出力ストリームへの書き込み var responseBytes = response.Content.ReadAsByteArrayAsync()。Result; thumb.Write(responseBytes、0、responseBytes.Length); '。また、私のjsonでの出力パスは、現在、親指/%rand-guid%.jpg "、"です。私はそれが動作すると確信しているときにもう少しリサーチに行き、完全な答えを投稿してください。 –
はい、正しいです。ストリームへの単純な割り当てはモデルではありません。あなたは提供されたストリームに書き込む必要があります。あなたは、他のすべてのバインディングをまたぐケースであることがわかります。 – mathewc