Monodroid Camera / imageview示例

时间:2011-05-06 04:14:02

标签: xamarin.android

有人可以发布如何使用相机,捕获图像,在图像视图中预览图像,以jpg压缩图像并将字节上传到远程服务器的示例吗?我能找到的最接近的是下面。我们有相机和图像捕捉,但我们需要知道如何预览,压缩/调整jpg到640 / 480px和大约120kb大小,然后将字节上传到远程服务器。感谢大家的帮助。 http://android-coding.blogspot.com/2010/12/intent-of-mediastoreactionimagecapture.html

2 个答案:

答案 0 :(得分:1)

查看您的代码,我发现有些事情是错误的:

- [用于相机功能] -

  1. 不要自己创建文件。这不是必需的。使用ContentResolver.Insert功能给你回一个文件URI将包含图片,just like done here,也如果你想检查是否有外部存储器目前接管isMounted。
  2. 您正在检查是否有数据,然后检查是否有缩略图。如果没有缩略图,您将获得完整的图像。这没有任何意义,除非你想要完整版本的拇指,如果拇指没有给回?你不是只想抓住完整版本或者两者兼而有之而不是这个吗?
  3. 您正在检索字符串值变量以获取完整图像的URI?只需保存你从我的第一点的代码作为属性得到URI(让我们说“myPhotoURI”的活动课。在处理你的相机意图结果OnActivityResult功能只是记得,URI,并把它作为下(是的,你'正确看待它;我甚至没有使用数据意图只是为了记住uri):

    Bitmap imageFromCam = MediaStore.Images.Media.GetBitmap(this.ContentResolver, Android.Net.Uri.Parse(myPhotoURI));

  4. 要抓住从图库的图像只使用SelectImageFromStorage()函数from this question's answer,并在检索所选择的图像的URI OnActivityResult检查只需使用:

    Android.Net.Uri selectedImageUri = data.ToURI();

  5. 这对我来说就像是一种魅力。

    - [将数据发送到网络服务] -

    假设您正在使用WCF或Web服务,并希望将图像数据作为字节数组接收;批准的答案to this question提供了一个很好的例子,说明如何将图像转换为字节数组(无论如何,这是WCF Web服务所需要的)

    我认为这些指示会让你前进。

答案 1 :(得分:0)

这是迄今为止最接近的例子......当使用额外输出时,这会带回Null数据。仍然试图访问完整的图像/照片而不是缩略图。

    private void saveFullImage() {
        Intent intent = new Intent(Android.Provider.MediaStore.ActionImageCapture);

        string file = System.IO.Path.Combine(Android.OS.Environment.DirectoryDcim.ToString(), "test.jpg");

        var outputFileUri = Android.Net.Uri.Parse(file);
        intent.PutExtra(Android.Provider.MediaStore.ExtraOutput, outputFileUri);
        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");
                    // TODO Do something with the thumbnail
                }
            }
            else
            {
                var outputFileUri = data.GetParcelableArrayExtra("outputFileuri");
                // TODO Do something with the full image stored
                // in outputFileUri
            }
        }
    }