android图像绘制--获取本地图片或拍照图片代码

从SD卡中获取图片资源,或者拍一张新的图片。
  注释:拍照获取的话,可以指定图片的保存地址,在此不说明。
  从SD卡中获取图片资源,或者拍一张新的图片。
  先贴代码
  获取图片:
  注释:拍照获取的话,可以指定图片的保存地址,在此不说明。
  

 代码如下 复制代码
CharSequence[] items = {"相册", "相机"};
  new AlertDialog.Builder(this)
  .setTitle("选择图片来源")
  .setItems(items, new OnClickListener() {
  public void onClick(DialogInterface dialog, int which) {
  if( which == SELECT_PICTURE ){
  Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
  intent.addCategory(Intent。CATEGORY_OPENABLE);
  intent.setType("image/*");
  startActivityForResult(Intent。createChooser(intent, "选择图片"), SELECT_PICTURE);
  }else{
  Intent intent = new Intent(MediaStore。ACTION_IMAGE_CAPTURE);
  startActivityForResult(intent, SELECT_CAMER);
  }
  }
  })
  .create().show();
  CharSequence[] items = {"相册", "相机"};
  new AlertDialog.Builder(this)
  .setTitle("选择图片来源")
  .setItems(items, new OnClickListener() {
  public void onClick(DialogInterface dialog, int which) {
  if( which == SELECT_PICTURE ){
  Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
  intent.addCategory(Intent.CATEGORY_OPENABLE);
  intent.setType("image/*");
  startActivityForResult(Intent.createChooser(intent, "选择图片"), SELECT_PICTURE);
  }else{
  Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  startActivityForResult(intent, SELECT_CAMER);
  }
  }
  })
  .create().show();

处理图片,方法一,直接处理返回图片:
  注释:
  1、网上有说明,直接处理返回的图片是被系统压缩过的,不过自己在测试的过程并没有区别;
  2、如果用户不断的重新获取图片的话,必须把现在的Bmp内存释放,否则会报错! bmp.recycle()。

 代码如下 复制代码

  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if(resultCode == RESULT_OK){
  //选择图片
  Uri uri = data.getData();
  ContentResolver cr = this.getContentResolver();
  try {
  if(bmp != null)//如果不释放的话,不断取图片,将会内存不够
  bmp.recycle();
  bmp = BitmapFactory.decodeStream(cr.openInputStream(uri));
  } catch (FileNotFoundException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  }
  System.out.println("the bmp toString: " + bmp);
  imageSV.setBmp(bmp);
  }else{
  Toast.makeText(SetImageActivity.this, "请重新选择图片", Toast.LENGTH_SHORT).show();
  }
  }
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if(resultCode == RESULT_OK){
  //选择图片
  Uri uri = data.getData();
  ContentResolver cr = this.getContentResolver();
  try {
  if(bmp != null)//如果不释放的话,不断取图片,将会内存不够
  bmp.recycle();
  bmp = BitmapFactory.decodeStream(cr.openInputStream(uri));
  } catch (FileNotFoundException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  }
  System.out.println("the bmp toString: " + bmp);
  imageSV.setBmp(bmp);
  }else{
  Toast.makeText(SetImageActivity.this, "请重新选择图片", Toast.LENGTH_SHORT).show();
  }
  }

  

处理图片,方法二,获得图片的地址再处理:

 代码如下 复制代码

  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if(resultCode == RESULT_OK){
  Uri uri = data.getData();
  String [] proj={MediaStore.Images.Media.DATA};
  Cursor cursor = managedQuery( uri,
  proj,                 // Which columns to return
  null,       // WHERE clause; which rows to return (all rows)
  null,       // WHERE clause selection arguments (none)
  null);                 // Order-by clause (ascending by name)
  int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
  cursor.moveToFirst();
  String path = cursor.getString(column_index);
  bmp = BitmapFactory.decodeFile(path);
  System.out.println("the path is :" + path);
  }else{
  Toast.makeText(SetImageActivity.this, "请重新选择图片", Toast.LENGTH_SHORT).show();
  }
  }
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if(resultCode == RESULT_OK){
  Uri uri = data.getData();
  String [] proj={MediaStore.Images.Media.DATA};
  Cursor cursor = managedQuery( uri,
  proj,                 // Which columns to return
  null,       // WHERE clause; which rows to return (all rows)
  null,       // WHERE clause selection arguments (none)
  null);                 // Order-by clause (ascending by name)
  int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
  cursor.moveToFirst();
  String path = cursor.getString(column_index);
  bmp = BitmapFactory.decodeFile(path);
  System.out.println("the path is :" + path);
  }else{
  Toast.makeText(SetImageActivity.this, "请重新选择图片", Toast.LENGTH_SHORT).show();
  }
  }

时间: 2024-10-27 11:57:34

android图像绘制--获取本地图片或拍照图片代码的相关文章

android图像绘制(六)获取本地图片或拍照图片等图片资源_Android

从SD卡中获取图片资源,或者拍一张新的图片. 先贴代码 获取图片: 注释:拍照获取的话,可以指定图片的保存地址,在此不说明. 复制代码 代码如下: CharSequence[] items = {"相册", "相机"}; new AlertDialog.Builder(this) .setTitle("选择图片来源") .setItems(items, new OnClickListener() { public void onClick(Dia

android图像绘制(六)获取本地图片或拍照图片等图片资源

从SD卡中获取图片资源,或者拍一张新的图片. 先贴代码 获取图片: 注释:拍照获取的话,可以指定图片的保存地址,在此不说明. 复制代码 代码如下: CharSequence[] items = {"相册", "相机"}; new AlertDialog.Builder(this) .setTitle("选择图片来源") .setItems(items, new OnClickListener() { public void onClick(Dia

Android自定义组件获取本地图片和相机拍照图片

iOS中有封装好的选择图片后长按出现动画删除效果,效果如下 而Android找了很久都没有找到有这样效果的第三方组件,最后懒得找了还是自己实现这效果吧 选择图片后还可对图片进行剪裁 当然,代码中还有很多不完善的地方,我接下来会继续完善这个组件的 已经上传到开源社区,欢迎大家来Star啊~ Demo源码:传送门 设计中的碰到的一些问题和解决思路 1.如何让加号图片显示在GridView最后面 首先在调用GridAdapter构造方法时就加载加号图片 /** * 图片适配器 * @param con

android图像绘制(五)画布保存为指定格式/大小的图片_Android

将图片进行编辑(放缩,涂鸦等),最后保存成指定格式.大小的图片. 先贴代码: 复制代码 代码如下: Bitmap bmp = Bitmap.createBitmap(480, 800, Config.ARGB_8888); Canvas canvas = new Canvas(bmp); canvas.drawBitmap(this.bmp, matrix, paint); canvas.save(Canvas.ALL_SAVE_FLAG); canvas.restore(); File fil

android图像绘制(五)画布保存为指定格式/大小的图片

将图片进行编辑(放缩,涂鸦等),最后保存成指定格式.大小的图片. 先贴代码: 复制代码 代码如下: Bitmap bmp = Bitmap.createBitmap(480, 800, Config.ARGB_8888); Canvas canvas = new Canvas(bmp); canvas.drawBitmap(this.bmp, matrix, paint); canvas.save(Canvas.ALL_SAVE_FLAG); canvas.restore(); File fil

android选择图片或拍照图片上传到服务器(包括上传参数)

http://blog.csdn.net/vipa1888/article/details/8213898 最近要搞一个项目,需要上传相册和拍照的图片,不负所望,终于完成了!  不过需要说明一下,其实网上很多教程拍照的图片,都是缩略图不是很清晰,所以需要在调用照相机的时候,事先生成一个地址,用于标识拍照的图片URI 具体上传代码: 1.选择图片和上传界面,包括上传完成和异常的回调监听 [java] view plaincopy package com.spring.sky.image.uploa

Android选择图片或拍照图片上传到服务器

最近要搞一个项目,需要上传相册和拍照的图片,不负所望,终于完成了!  不过需要说明一下,其实网上很多教程拍照的图片,都是缩略图不是很清晰,所以需要在调用照相机的时候,事先生成一个地址,用于标识拍照的图片URI 具体上传代码: 1.选择图片和上传界面,包括上传完成和异常的回调监听 package com.spring.sky.image.upload; import java.util.HashMap; import java.util.Map; import android.app.Activi

android图像绘制(二)画布上放大缩小问题_Android

android中图像在画布上放大缩小时,图像的边框大小没有改变! 原图如下: 放大后:原来图片的边框没有改变,位置依旧! 所以如果要放置图片的位置的话,就需要做相应的位置移动才可以! 采用如下代码(全屏放置图片): 复制代码 代码如下: Matrix matrix = new Matrix(); matrix.postScale(canvas.getWidth()*1.01f/bmpBg.getWidth(), canvas.getHeight()*1.01f/bmpBg.getHeight()

android图像绘制(二)画布上放大缩小问题

android中图像在画布上放大缩小时,图像的边框大小没有改变! 原图如下: 放大后:原来图片的边框没有改变,位置依旧! 所以如果要放置图片的位置的话,就需要做相应的位置移动才可以! 采用如下代码(全屏放置图片):复制代码 代码如下: Matrix matrix = new Matrix(); matrix.postScale(canvas.getWidth()*1.01f/bmpBg.getWidth(), canvas.getHeight()*1.01f/bmpBg.getHeight(),