gpt4 book ai didi

c# - 使用 MonoDroid 从相机访问全分辨率图片

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:07:43 26 4
gpt4 key购买 nike

我正在尝试找到一种从 MonoDroid 访问全分辨率图片的方法,经过长时间尝试将 Java 示例移植到 MonoDroid 并查看其他人似乎如何获得,我目前有以下(哪个不起作用)

    private const int TAKE_PICTURE = 1;

protected Uri fileUri;

private void takePhoto(object sender, EventArgs e)
{
Intent intent = new Intent(Android.Provider.MediaStore.ActionImageCapture);

string path = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal),
"hqxmmc/pictures/ikbeneenplaatje.jpg");

Java.IO.File xfile = new Java.IO.File(path);

if (xfile.Exists())
{
Android.Util.Log.Warn("FILE", "file exists {0} \n overwriting!", xfile.Name);
xfile.Delete();
xfile.CreateNewFile();
}
else
{
Android.Util.Log.Warn("FILE", "file does not exist {0}, creating", xfile.Name);
xfile.Mkdirs();
xfile.CreateNewFile();
}


fileUri = Android.Net.Uri.FromFile(xfile);

Android.Util.Log.WriteLine(LogPriority.Warn, "FILE", fileUri.ToString());

intent.PutExtra(Android.Provider.MediaStore.ExtraOutput, fileUri);
StartActivityForResult(intent, TAKE_PICTURE);



}

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{

base.OnActivityResult(requestCode, resultCode, data);
if (requestCode == TAKE_PICTURE)
{
Uri imageUri = null;
// Check if the result includes a thumbnail Bitmap
if (data != null)
{
if (data.HasExtra("data"))
{
var thumbnail = data.GetParcelableArrayExtra("data");
Android.Util.Log.WriteLine(LogPriority.Info, "DATA", thumbnail.ToString());
// TODO Do something with the thumbnail

var outputFileUri = data.GetParcelableArrayExtra("outputFileuri");
Android.Util.Log.WriteLine(LogPriority.Info, "DATA", outputFileUri.ToString());
// TODO Do something with the full image stored
// in outputFileUri
}
}
else
{
//todo : reload full image form fileuri
Android.Util.Log.WriteLine(LogPriority.Info, "PATH", fileUri.ToString());
}

}
}

显示“拍照”屏幕,我可以拍照,但该照片随后会保存到设备上的默认 DCIM 文件夹,忽略我为其指定的文件名和路径。

当我保存图片时,调用了 OnActivityResult,但它的 Intent data 参数包含一个空的 intent。

我如何获得全分辨率图片和/或我刚刚拍摄的图片的缩略图?

最佳答案

我将简单地发布我在我的项目中使用的代码。希望它能帮助你。我还尝试通过 ContentValues 类设置文件名和路径,就像 Android wiki 中描述的那样,但一切都无效,我认为这是一些 MonoDroid 错误。

private string _imageUri;

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();
var i = new Intent(MediaStore.ActionImageCapture);
i.PutExtra(MediaStore.ExtraOutput, uri);
StartActivityForResult(i, CAPTURE_PHOTO);
}

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
if (resultCode == Result.Ok && requestCode == CAPTURE_PHOTO)
{
Toast.MakeText(this, string.Format("Image URI is {0}",_imageUri), ToastLength.Short).Show();
}
}

关于c# - 使用 MonoDroid 从相机访问全分辨率图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8068156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com