1
だから私は開くためにカメラを取得して、写真を撮った後、次のようにカメラの結果を返す限り得ている:峠カメラOnActivityResultイメージとしてサーバ上に保存されるのWebServiceする
bt.Click += delegate
{
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
StartActivityForResult(intent, 0);
};
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
if (resultCode == Result.Ok && requestCode == 0)
{
string result = data.ToURI();
}
値を結果の「#Intent; action = inline-data; B.bitmap-data = true; end」となる。画像の結果を取得し、それをサーバー上の画像ファイルとして保存する私のWebサービスに送ることができる限り、私はここからどこに行くのか本当に分かりません。
編集:同じ問題
bt.Click += delegate
{
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
StartActivityForResult(intent, 0);
};
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
Bitmap bitmap = (Android.Graphics.Bitmap)data.Extras.Get("data");
using (var stream = new System.IO.MemoryStream())
{
bitmap.Compress(Android.Graphics.Bitmap.CompressFormat.Png, 0, stream);
byte[] imageBytes = stream.ToArray();
string base64String = Convert.ToBase64String(imageBytes);
inst.saveImage(base64String);
}
}
[WebMethod]
public void saveImage(string stream)
{
byte[] imageBytes = Convert.FromBase64String(stream);
MemoryStream ms = new MemoryStream(imageBytes, 0,
imageBytes.Length);
var filepath = "C:\\Temp\\Test.png";
using (Stream file = File.OpenWrite(filepath))
{
ms.CopyTo(file, (int)stream.Length);
}
}
var bitmap =(Android.Graphics.Bitmap)data.GetStringExtra( "data");行がnull参照例外を生成しています。 – jmease
それは意味がある、私は明らかに文字列ではないときにGetStringExtraを呼び出すことを意味しませんでした...更新されました。 –
ヌル参照エラーがもう発生しません。しかし、まだストリームには何も含まれていません。保存するWebサービスにストリームを渡すときに、ストリームを文字列に変換する必要があります(ストリームとして残すと、狂ったタイプの不一致の状態になっていました)。私がStreamReaderをするときreader =新しいStreamReader(ストリーム);文字列テキスト= reader.ReadToEnd();テキストは空です。 – jmease