From 776d5926ff7370b5b3a613b91ad69197a815534d Mon Sep 17 00:00:00 2001 From: "Elliott.zheng" Date: Wed, 24 May 2017 09:33:43 +0800 Subject: [PATCH] crop and show from album and camera --- .idea/vcs.xml | 6 ++ .../a18350/my_new_test/MainActivity.java | 89 +++++++++++++++++-- app/src/main/res/layout/activity_main.xml | 18 ++-- 3 files changed, 99 insertions(+), 14 deletions(-) create mode 100644 .idea/vcs.xml diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/elliott/a18350/my_new_test/MainActivity.java b/app/src/main/java/com/elliott/a18350/my_new_test/MainActivity.java index f9fab42..8e08be0 100644 --- a/app/src/main/java/com/elliott/a18350/my_new_test/MainActivity.java +++ b/app/src/main/java/com/elliott/a18350/my_new_test/MainActivity.java @@ -1,9 +1,12 @@ package com.elliott.a18350.my_new_test; import android.app.AlertDialog; +import android.content.ContentResolver; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.os.Environment; @@ -11,13 +14,18 @@ import android.provider.MediaStore; import android.support.v4.app.ActivityCompat; import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; +import android.util.Log; import android.view.View; import android.widget.Button; +import android.widget.ImageView; import com.yalantis.ucrop.UCrop; import com.yalantis.ucrop.UCropActivity; import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; public class MainActivity extends AppCompatActivity { @@ -26,14 +34,15 @@ public class MainActivity extends AppCompatActivity { //拍照请求码 private static final int REQUEST_CAMERA = 1; private static final int REQUEST_PICK = 2; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - init(); + init_Croper(); } - private void init() { + private void init_Croper() { btn_start_crop = (Button)findViewById(R.id.button); btn_start_crop.setOnClickListener(new View.OnClickListener() { @Override @@ -66,8 +75,14 @@ public class MainActivity extends AppCompatActivity { switch (requestCode){ case REQUEST_CAMERA: + try{ + String path=startCropImage(data); + path = "file://"+path; + startUcrop(path); + }catch (Exception e){ + e.printStackTrace(); + } //调用相机了,要调用图片裁剪的方法 - startCropImage(Environment.getExternalStorageDirectory()+"/SavaPhoto/"); break; case REQUEST_PICK : try { @@ -83,8 +98,8 @@ public class MainActivity extends AppCompatActivity { String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA)); cursor.close(); path = "file://"+path; - //启动裁剪界面,配置裁剪参数 startUcrop(path); + //启动裁剪界面,配置裁剪参数 } } } catch (Exception e){ @@ -93,20 +108,24 @@ public class MainActivity extends AppCompatActivity { break; case UCrop.REQUEST_CROP: Uri croppedFileUri = UCrop.getOutput(data); + recognize(croppedFileUri); break; } } private void startUcrop(String path) { + Log.d("HH", "startUcrop: "+path); Uri uri_crop = Uri.parse(path); //裁剪后保存到文件中 Uri destinationUri = Uri.fromFile(new File(getCacheDir(), "SampleCropImage.jpg")); - UCrop uCrop = UCrop.of(uri_crop, destinationUri); + UCrop uCrop = UCrop.of(uri_crop, destinationUri).withAspectRatio(4,1); UCrop.Options options = new UCrop.Options(); + //设置标题 + options.setToolbarTitle("请将号码放在扫描框中,尽量减少干扰"); //设置裁剪图片可操作的手势 options.setAllowedGestures(UCropActivity.SCALE, UCropActivity.ROTATE, UCropActivity.ALL); //设置隐藏底部容器,默认显示 -// options.setHideBottomControls(true); + options.setHideBottomControls(true); //设置toolbar颜色 options.setToolbarColor(ActivityCompat.getColor(this, R.color.colorPrimary)); //设置状态栏颜色 @@ -117,11 +136,63 @@ public class MainActivity extends AppCompatActivity { uCrop.start(this); } - /** + + private void recognize(Uri uri){ + try { + Log.e("recognize uri", uri.toString()); + ContentResolver cr = this.getContentResolver(); + Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri)); + if(bitmap==null) + Log.i("recognize", "bitmap又是空的"); + ImageView imageview = (ImageView) findViewById(R.id.imageView); + if(imageview==null) + Log.i("recognize", "又是空的"); + /* 将Bitmap设定到ImageView */ + imageview.setImageBitmap(bitmap); + + } + catch (FileNotFoundException e) { + Log.e("Exception", e.getMessage(),e); + } + + } + /**e * 调用相机后对图片进行裁剪的方法 - * @param s + * @param */ - private void startCropImage(String s) { + private String startCropImage(Intent data) { + if (!Environment.getExternalStorageState().equals( + Environment.MEDIA_MOUNTED)) { + Log.i("save", "sd card is not avaiable/writeable right now."); + } + //显示图片 + Bitmap bmp = (Bitmap) data.getExtras().get("data");// 解析返回的图片成bitmap + ImageView imageView=(ImageView)findViewById(R.id.imageView); + imageView.setImageBitmap(bmp); + // 保存文件 为图片命名啊 + FileOutputStream fos = null; + String fileName = getCacheDir()+"SampleCropImage.jpg";// 保存路径 + Log.d("start crop", fileName); + try {// 写入SD card + fos = new FileOutputStream(fileName); + bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } finally { + try { + fos.flush(); + fos.close(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + }// 显示图片 + return fileName; } + + + + } + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index ede620d..e9614fe 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,17 +1,25 @@ -