Android 拍照+图片 裁剪 功能的实现
2014-05-28 18:03
501 查看
接到一个小需求,要求实现类似截取头像的图片 裁剪 的功能!时间要求很紧,所以就上看了几个小Demo。虽然原理不难,但是真正好用的没有几个。在一堆烂苹果里找到一个最不烂的。然后又自己修改了一下,达到了预期需求实现!
View Code
import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.view.View; import android.widget.Button; import android.widget.ImageView; public class DoPhotoActivity extends Activity implements View.OnClickListener { /** Called when the activity is first created. */ private Button selectImageBtn; private ImageView imageView; private File sdcardTempFile; private AlertDialog dialog; private int crop = 128; private static final int PHOTO_PICKED_WITH_DATA = 3021; private static final int PHOTO_CAMERA_PICKED_WITH_DATA = 3022; private static final int CAMERA_WITH_DATA = 3023; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.do_photo); selectImageBtn = (Button) findViewById(R.id.selectImageBtn); imageView = (ImageView) findViewById(R.id.imageView); selectImageBtn.setOnClickListener(this); sdcardTempFile = new File(Environment.getExternalStorageDirectory() + "/MYIMAGE/" + String.valueOf(System.currentTimeMillis()) + ".jpg"); } public void ImageScale() { Intent intent = new Intent("android.intent.action.PICK"); intent.setDataAndType(MediaStore.Images.Media.INTERNAL_CONTENT_URI, "image/*"); intent.putExtra("output", Uri.fromFile(sdcardTempFile)); intent.putExtra("crop", "true"); intent.putExtra("aspectX", 1);// 裁剪框比例 intent.putExtra("aspectY", 1); intent.putExtra("outputX", crop);// 输出图片大小 intent.putExtra("outputY", crop); startActivityForResult(intent, PHOTO_PICKED_WITH_DATA); } public void photo() { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, CAMERA_WITH_DATA); } protected void doCropPhoto(Bitmap data) { Intent intent = getCropImageIntent(data); startActivityForResult(intent, PHOTO_CAMERA_PICKED_WITH_DATA); } public Intent getCropImageIntent(Bitmap data) { Intent intent = new Intent("com.android.camera.action.CROP"); intent.setType("image/*"); intent.putExtra("data", data); intent.putExtra("crop", "true"); intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); intent.putExtra("outputX", crop); intent.putExtra("outputY", crop); intent.putExtra("return-data", true); return intent; } @Override public void onClick(View v) { if (v == selectImageBtn) { if (dialog == null) { dialog = new AlertDialog.Builder(this).setItems( new String[] { "相机", "相册" }, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (which == 0) { photo(); } else { ImageScale(); } } }).create(); } if (!dialog.isShowing()) { dialog.show(); } } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { switch (requestCode) { case CAMERA_WITH_DATA: Bitmap camera_photo = data.getParcelableExtra("data"); doCropPhoto(camera_photo); case PHOTO_PICKED_WITH_DATA: Bitmap picked_photo = BitmapFactory.decodeFile(sdcardTempFile.getAbsolutePath()); imageView.setImageBitmap(picked_photo); break; case PHOTO_CAMERA_PICKED_WITH_DATA: Bitmap camera_picked_photo = data.getParcelableExtra("data"); imageView.setImageBitmap(camera_picked_photo); break; } } } }
View Code
相关文章推荐
- Android实现拍照、选择图片并裁剪图片功能
- Android实现拍照、选择图片并裁剪图片功能
- Android开发:仿微信和QQ空间发说说相册读取、拍照、图片裁剪和图片上传服务器等功能的实现
- Android实现拍照、选择相册图片并裁剪功能
- Android开发:相册读取、拍照、图片裁剪和图片上传服务器等功能的实现
- Android实现拍照,以及从相册选择图片裁剪功能同时保存在本地
- 区域实现Android实现图片的裁剪(不调用系统功能)
- Android实现图片的裁剪(不调用系统功能)
- Android实现图片的裁剪(不调用系统功能)
- 使用Java代码在Android中实现图片裁剪功能
- Android相机开发(一)之预览拍照查看图片基本功能的实现
- Android自定义相机拍照、图片裁剪的实现
- Android实现类似换QQ头像功能(图片裁剪)
- Android之UI学习篇七:ImageView实现适屏和裁剪图片的功能
- Android实现从本地图库/相机拍照后裁剪图片并设置头像
- Android相机开发(一)之预览拍照查看图片基本功能的实现
- Android Camera相机功能实现 拍照并保存图片
- android 里面对图片的不同压缩处理 以及简单拍照功能实现加设置闪光灯效果
- Android之UI学习篇七:ImageView实现适屏和裁剪图片的功能
- android图片裁剪功能实现详解