[英]How do I grab an Image or bitmap from the android camera using c#
我可以使用以下代码获取图像。 拍摄快照后,我想将图像转换为byte[]
。 我卡住的是拍照后应该如何捕捉图像?
Intent
是我用来打开相机的意图,但是我不确定是否有可以覆盖的东西,或者该意图是否仍然具有我的image/bitmap
以便可以对其进行分解。
[Activity(Label = "CameraPage")]
public class PhotoTaker : Activity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.CameraView);
ImageButton button = FindViewById<ImageButton>(Resource.Id.imagebutton);
button.Click += BtnCameraClick;
}
private string _imageUri;
private Intent intent;
private Boolean isMounted
{
get
{
return Android.OS.Environment.ExternalStorageState.Equals(Android.OS.Environment.MediaMounted);
}
}
public void BtnCameraClick(object sender, EventArgs eventArgs)
{
var uri = ContentResolver.Insert(isMounted
? MediaStore.Images.Media.ExternalContentUri
: MediaStore.Images.Media.InternalContentUri, new ContentValues());
_imageUri = uri.ToString();
intent = new Intent(MediaStore.ActionImageCapture);
//bitmap = MediaStore.Images.Media.GetBitmap(ContentResolver, uri);
intent.PutExtra(MediaStore.ExtraOutput, uri);
StartActivityForResult(intent, 1001);
}
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
if (resultCode == Result.Ok && requestCode == 1001)
{
Toast.MakeText(this, string.Format("Image URI is {0}", _imageUri), ToastLength.Short).Show();
Android.Content.Intent temp = new Intent(this, typeof(PayeeInformationViewModel));
StartActivity(temp);
//this.byteArr = this.bitmap.GetNinePatchChunk();
// byteArr = intent.GetByteArrayExtra(_imageUri);
// GetFileStreamPath(this._imageUri);
//var firstArr = string.Empty;
//if (byteArr.Length > 5)
//{
// foreach (byte b in byteArr)
// {
// firstArr += b.ToString();
// if (firstArr.Length > 5)
// {
// break;
// }
// }
//}
//else
//{
// firstArr = "Small";
//}
// Toast.MakeText(this, firstArr, ToastLength.Short).Show();
// MemoryStream stream = new MemoryStream(byteArr);
}
}
}
这是如何将图像转换为字节[]
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
if (resultCode == Result.Ok && requestCode == 1001)
{
Android.Net.Uri _currentImageUri = Android.Net.Uri.Parse(_imageUri);
Bitmap bitmap = BitmapFactory.DecodeStream(ContentResolver.OpenInputStream(_currentImageUri));
byte[] bitmapData = null;
using (MemoryStream stream = new MemoryStream())
{
bitmap.Compress(Bitmap.CompressFormat.Png, 0, stream);
bitmapData = stream.ToArray();
}
bitmap.Dispose();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.