Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 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實現拍照截圖功能的方法,希望對大家的學習有所幫助。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved