• mono for android 获取手机照片或拍照并裁剪保存


    axml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <Button  
        android:id="@+id/btn0"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="从相册中选择照片"
        />
      <Button
        android:id="@+id/btn1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="拍照"
        />
      <ImageView
        android:id="@+id/imageID"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        
        
        />
    </LinearLayout>

    C#

    using System;
    
    using Android.App;
    using Android.Content;
    using Android.Widget;
    using Android.OS;
    using Android.Graphics;
    using System.IO;
    
    namespace Phoot
    {
        [Activity(Label = "Phoot", MainLauncher = true, Icon = "@drawable/icon")]
        public class Activity1 : Activity
        {
            public static int NONE = 0;
            public static int PHOTOHRAPH = 1;//拍照
            public static int PHOTOXZOOM = 2;//缩放
            public static int PHOTORESOULT = 3;//结果
    
            public static string IMAGE_UNSPECTFIED = "image/*";
    
            ImageView imageview = null;
            Button button0 = null;
            Button button1 = null;
            protected override void OnCreate(Bundle bundle)
            {
                base.OnCreate(bundle);
    
                // Set our view from the "main" layout resource
                SetContentView(Resource.Layout.Main);
    
                button0 = FindViewById<Button>(Resource.Id.btn0);
                button1 = FindViewById<Button>(Resource.Id.btn1);
                imageview = FindViewById<ImageView>(Resource.Id.imageID);
                button0.Click += new EventHandler(button0_Click);
                button1.Click += new EventHandler(button1_Click);
    
            }
            //选择照片
            void button0_Click(object sender, EventArgs e)
            {
                Intent intent = new Intent(Intent.ActionPick, null);
                //选择照片意图
                intent.SetDataAndType(
                 Android.Provider.MediaStore.Images.Media.ExternalContentUri, IMAGE_UNSPECTFIED);
                StartActivityForResult(intent, PHOTOXZOOM);
            }
    
    
            //拍照
            void button1_Click(object sender, EventArgs e)
            {
                
                Intent intent = new Intent(Android.Provider.MediaStore.ActionImageCapture);
                string file = System.IO.Path.Combine(Android.OS.Environment.ExternalStorageDirectory.ToString(),Android.OS.Environment.DirectoryDcim.ToString()+ "/test.jpg");
    
                var outputFileUri = Android.Net.Uri.Parse(file);
                intent.PutExtra(Android.Provider.MediaStore.ExtraOutput,file);
                StartActivityForResult(intent, PHOTOHRAPH);
    
            }
    
            protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
            {
                if (requestCode == NONE)
                {
                    return;
                }
                if (requestCode == PHOTOHRAPH)
                {
                    //获取照片
                    Bitmap bitmap = (Bitmap)data.Extras.Get("data");
                     Java.IO.File picture = new Java.IO.File(Android.OS.Environment.ExternalStorageDirectory.ToString()+"/"+Android.OS.Environment.DirectoryDcim.ToString() + "/test.jpg");
    
                      //Java.IO.FileOutputStream b = new Java.IO.FileOutputStream(picture);
                      FileStream MyFileStream1 = new FileStream(picture.ToString(), FileMode.Create);
                    //保存照片
                      bitmap.Compress(Bitmap.CompressFormat.Jpeg, 100, MyFileStream1);
       
                    if (System.IO.File.Exists(picture.ToString()))
                    {
                        startPhotoZoom(Android.Net.Uri.FromFile(picture));
                    }
                    
                    //startPhotoZoom
                }
                if (data == null)
                {
                    return;
                }
                if (requestCode == PHOTOXZOOM)
                {
                    startPhotoZoom(data.Data);
                }
                //处理结果
                if (requestCode == PHOTORESOULT)
                {
                    Bundle extras = data.Extras;
                    if (extras != null)
                    {
                        Bitmap photo = (Bitmap)extras.GetParcelable("data");
                        
                        //Stream stream = null;
                        //压缩文件
                        //photo.Compress(Bitmap.CompressFormat.Jpeg, 75, stream);
    
                        imageview.SetImageBitmap(photo);
                    }
                }
    
                        base.OnActivityResult(requestCode, resultCode, data);
            }
    
           
    
            //缩放
            public void startPhotoZoom(Android.Net.Uri uri)
            {
    
    
                Intent intent = new Intent("com.android.camera.action.CROP");
                intent.SetDataAndType(uri, IMAGE_UNSPECTFIED);
    
                intent.PutExtra("crop", true);
                //// aspectX aspectY 是宽高的比例 
                intent.PutExtra("aspectX", 1);
                intent.PutExtra("aspectY", 1);
                //// outputX outputY 是裁剪图片宽? 
                intent.PutExtra("outputX", 100);
                intent.PutExtra("outputY", 100);
                intent.PutExtra("return-data", true);
                StartActivityForResult(intent, PHOTORESOULT);
    
            }
    
        }
    }


     以前的我是没有做笔记的习惯的,学习了后觉得自己能记住,但是最近发现很多学的东西都忘记了,所有现在一有新的知识,就记下来吧。

     最近又做一个mono for android 的项目 这次调整比较大,上次做的点餐系统很好用 ,但是做的时候没有做笔记很多东西都忘记了,这次我把项目涉及到的知识传到博客上,方便记忆,也很大家分享分享的,希望大家能给出点意见。——小査

  • 相关阅读:
    图像的轮廓发现与绘制
    原图中寻找模板匹配图像
    图像的直方图均衡化
    图像像素的重映射
    图像的采样、DOG
    将本地jar包打包到本地仓库和上传到私服
    boot+Xss防攻击的处理方案
    Springboot入门之分布式事务管理
    CRT破解版
    Springboot关于脚本脚本启动的项目:
  • 原文地址:https://www.cnblogs.com/zhahainie/p/3553221.html
Copyright © 2020-2023  润新知