私はこの実装に数時間苦労しています(SO、Xamarin Forums、Googleなど)どこでも解決策を見つけることができません。 ..byte []変換のために保存された画像からストリームを作成できません
この現在のシナリオでは、.Droid.Resources.Drawable
に私の共有コードからbyte[]
にアクセスして変換したい画像がいくつかあります。これは私のCRUDの機能を、サーバーのエンドポイントとして設定したREST APIでテストしたいからです。
画像はアプリケーションでうまく表示されますが、何らかの理由でXamarinの画像をbyte[]
に変換する過程で私の頭を歪ませることができません。私はそれを何度も「正常」で行った。C# ...
申し訳ありませんがコードがちょっと混乱していますが、私はあなたがそのアイデアを得ると確信しています。
- 私は
.Droid
ストレージ(後でiOS向けに移植されます) - 変換から画像を取得したいが
byte[]
- にイメージが私のAPIにその
byte[]
表現を送ると述べました。以下の例をベースに、私は新しいストリーム(new Stream(sauce)
)
を作成しようとしてる
C#: An instance of an abstract class can not be created
:コードの現在の状態では
が、私はこのエラーを取得していますスニペットでhereが見つかり、全額がStenとVincentに送られます。
/*
* Takes an arbitrary string as a token, updates a record with dummy data and a placeholder_image.
*/
public async Task<string> PostUpdateFoundation(string arbitrary, Image img)
{
ImageSource sauce = ImageSource.FromFile("abc.png");
byte[] byte_img = FromStreamToByte(new Stream(sauce)); //error occurs here
Debug.WriteLine("I'm in!");
var client = new System.Net.Http.HttpClient();
client.DefaultRequestHeaders.Add("Accept", "application/json");
var content = new StringContent(arbitrary);
var response = await client.PostAsync(String.Format("http://some.api.to.test.com?s={0}&img={1}", arbitrary, byte_img), content);
var result = response.Content.ReadAsStringAsync().Result;
return result;
}
/*
* Attempts to convert an stream (based on image source) into a byte[].
*/
public static byte[] FromStreamToByte (Stream input)
{
using (MemoryStream ms = new MemoryStream())
{
input.CopyTo(ms);
return ms.ToArray();
}
}
そして、あなたは何が原因ですか? –
それを紛失して申し訳ありません。ちょうどこんなにも混乱してしまいました。 コードの現在の状態では、 ''新しいストリーム(ソース) 'を作成しようとしている行で、" C#:抽象クラスのインスタンスを作成できません "というエラーが表示されます。 – geostocker
バイト配列をクエリ文字列パラメータとして含めるのはなぜですか?あなたはそれが何をすると思いますか?あなたは実質的に 'ToString()'を 'byte []'で呼び出しています。これはあなたが望むものにならない*本当に*です。私はあなたのイメージデータがバイナリデータとして(またはテキストが必要な場合)base64としてリクエストの本文に存在することを望みます。 –