ストリームを保存する方法は知っていますが、そのストリームを取得してサムネイルやその他のサイズの画像を作成したいのですが、バイト[]をAzure BlobStorageに保存する方法がわかりません。
これは私がストリームを保存するために今していることです:
// Retrieve reference to a blob named "myblob".
CloudBlockBlob _blockBlob = container.GetBlockBlobReference("SampleImage.jpg");
// upload from Stream object during file upload
blockBlob.UploadFromStream(stream);
// But what about pushing a byte[] array? I want to thumbnail and do some image manipulation
これは以前はストレージクライアントライブラリ(確かにバージョン1.7)にありましたが、バージョン2.0で削除されました
「すべてのアップロードおよびダウンロードメソッドがストリームベースになり、FromFile、ByteArray、Textのオーバーロードが削除されました。」
ただし、バイト配列の周囲に読み取り専用メモリストリームを作成することは、非常に軽量です。
byte[] data = new byte[] { 1, 2, 3 };
using(var stream = new MemoryStream(data, writable: false)) {
blockBlob.UploadFromStream(stream);
}
MSDNドキュメントソースコード でわかることから、これはバージョン3.0で戻ってきましたが、バージョン4.0でもまだ存在しています。
更新:
UploadFromByteArrayが戻ってきました。
public void UploadFromByteArray (
byte[] buffer,
int index,
int count,
[OptionalAttribute] AccessCondition accessCondition,
[OptionalAttribute] BlobRequestOptions options,
[OptionalAttribute] OperationContext operationContext
)
Azureについても何も知りませんが、Streamsを使用すると、次のようにアプローチできます。
//byte[] data;
using(var ms = new MemoryStream(data, false))
{
blockBlob.UploadFromStream(ms);
}