欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android实现从相册截图的功能

程序员文章站 2023-12-20 15:00:16
在这篇文章中,我将向大家展示如何从相册截图。 先看看效果图: 上一篇文章中,我就拍照截图这一需求进行了详细的分析,试图让大家了解android本身的限制,以及我...

在这篇文章中,我将向大家展示如何从相册截图。
先看看效果图:

Android实现从相册截图的功能

Android实现从相册截图的功能

上一篇文章中,我就拍照截图这一需求进行了详细的分析,试图让大家了解android本身的限制,以及我们应当采取的实现方案。大家可以回顾一下:android实现拍照截图功能

根据我们的分析与总结,图片的来源有拍照和相册,而可采取的操作有

  • 使用bitmap并返回数据
  • 使用uri不返回数据

前面我们了解到,使用bitmap有可能会导致图片过大,而不能返回实际大小的图片,我将采用大图uri,小图bitmap的数据存储方式。

我们将要使用到uri来保存拍照后的图片:

private

static 
final 
string image_file_location = "file:///sdcard/temp.jpg";//temp
 file

uri
 imageuri = uri.parse(image_file_location);//the
 uri to store the big bitmap

不难知道,我们从相册选取图片的action为intent.action_get_content。

根据我们上一篇博客的分析,我准备好了两个实例的intent。

一、从相册截大图:

intent
 intent = new

intent(intent.action_get_content, null);

intent.settype("image/*");

intent.putextra("crop",
"true");

intent.putextra("aspectx",
2);

intent.putextra("aspecty",
1);

intent.putextra("outputx",
600);

intent.putextra("outputy",
300);

intent.putextra("scale",
true);

intent.putextra("return-data",
false);

intent.putextra(mediastore.extra_output,
 imageuri);

intent.putextra("outputformat",
 bitmap.compressformat.jpeg.tostring());

intent.putextra("nofacedetection",
true);
//
 no face detection

startactivityforresult(intent,
 choose_big_picture);

二、从相册截小图

intent
 intent = new

intent(intent.action_get_content, null);

intent.settype("image/*");

intent.putextra("crop",
"true");

intent.putextra("aspectx",
2);

intent.putextra("aspecty",
1);

intent.putextra("outputx",
200);

intent.putextra("outputy",
100);

intent.putextra("scale",
true);

intent.putextra("return-data",
true);

intent.putextra("outputformat",
 bitmap.compressformat.jpeg.tostring());

intent.putextra("nofacedetection",
true);
//
 no face detection

startactivityforresult(intent,
 choose_small_picture);

三、对应的onactivityresult可以这样处理返回的数据

switch

(requestcode) {

case

choose_big_picture:

  log.d(tag,
"choose_big_picture:
 data = " 
+ data);//it
 seems to be null

  if(imageuri
 != null){

    bitmap
 bitmap = decodeuriasbitmap(imageuri);//decode
 bitmap

    imageview.setimagebitmap(bitmap);

  }

  break;

case

choose_small_picture:

  if(data
 != null){

    bitmap
 bitmap = data.getparcelableextra("data");

    imageview.setimagebitmap(bitmap);

  }else{

    log.e(tag,
"choose_small_picture:
 data = " 
+ data);

  }

  break;

default:

  break;

}


private

bitmap decodeuriasbitmap(uri uri){

  bitmap
 bitmap = null;

  try

{

    bitmap
 = bitmapfactory.decodestream(getcontentresolver().openinputstream(uri));

  }
catch

(filenotfoundexception e) {

    e.printstacktrace();

    return

null;

  }

  return

bitmap;

}

以上就是android实现拍照截图功能的方法,希望对大家的学习有所帮助。

上一篇:

下一篇: