来自Image_Capture意图的更大照片

时间:2012-01-20 15:49:09

标签: android xamarin.android

相机拍摄的图像是324 x 190.如何使用android意图拍摄更大的照片?目前的代码:

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)
        {
            var settings = PreferenceManager.GetDefaultSharedPreferences(this);
            var assetID = settings.GetString("unit", null);
            var store = settings.GetString("store", null);
            DateTime dt = DateTime.Now;
            var date1 = dt.ToString("MM-dd-yyyy");
            var time1 = dt.ToString("HH:mm");

            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, store, assetID, date1, time1);
            }

        }

    }

inst.saveImage ...是一种将图像保存到SQL Server数据库的Web方法。

然后当我在该表上运行select时,使用

在我的ASP.net项目的浏览器中显示图像
"data:image/png;base64," + base64 string from SQL, 

它只是一个324 x 190的图像。我需要它从意图中获取更大的照片,或者使用ASP.net中的数据网址来显示更大的照片。

1 个答案:

答案 0 :(得分:1)

要从IMAGE_CAPTURE意图获取完整尺寸的图像,您需要使用:

intent.PutExtra (MediaStore.ExtraOutput, contentResolverUri);

这样的事情:

ContentValues values = new ContentValues();
values.Put (MediaStore.Images.ImageColumns.Title, title);
values.Put (MediaStore.Images.ImageColumns.Description, description);
Uri uri = ContentResolver.Insert (MediaStore.Images.Media.ExternalContentUri, values);

intent.PutExtra (MediaStore.ExtraOutput, uri);

http://developer.android.com/reference/android/provider/MediaStore.html#ACTION_IMAGE_CAPTURE