mono for android 获取手机照片或拍照并裁剪保存
16lz
2022-07-24
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); } }}
更多相关文章
- Android(安卓)matrix 控制图片的旋转、缩放、移动
- android拍照与读取相册
- android解决坚屏拍照和保存图片旋转90度的问题,并兼容4.0
- [Android]在App中使用相机
- android WebView 图片缩放功能小结
- Android播放照相机声音
- android音频、视频、拍照基础操作
- Android(安卓)拍照及相册选图的那些坑
- android使用inSampleSize、inScaled、inDensity、inTargetDensit