欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android拍照裁剪圖片

 更新時(shí)間:2015年12月29日 14:48:26   投稿:mrr  
智能手機(jī)像素非常高,完全可以當(dāng)相機(jī)使用,下面一段代碼給大家分享了android拍照裁剪圖片的功能,對(duì)android拍照裁剪圖片相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧

下面是效果圖,看看是不是親想要的效果圖,如果是,這段代碼你就可以參考下了,但是要靈活運(yùn)用,根據(jù)需求做相應(yīng)的改動(dòng)。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical" >
 <Button
  android:id="@+id/take_photo"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="Take Photo" />
 <Button
  android:id="@+id/get_photo"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="get Photo" />
 <ImageView
  android:id="@+id/picture"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center_horizontal" />
</LinearLayout>

package com.example.choosepictest;

import java.io.File;
import java.io.IOException;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity implements OnClickListener {
 public static final int TAKE_PHOTO = 1;
 public static final int CROP_PHOTO = 2;
 public static final int GET_PHOTO = 3;
 private Button takePhoto;
 private Button getPhoto;
 private ImageView picture;
 private Uri headImgUri;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  takePhoto = (Button) findViewById(R.id.take_photo);
  getPhoto = (Button) findViewById(R.id.get_photo);
  picture = (ImageView) findViewById(R.id.picture);
  takePhoto.setOnClickListener(this);
  getPhoto.setOnClickListener(this);
 }
 @Override
 public void onClick(View v) {
  switch (v.getId()) {
  case R.id.take_photo:
   takePhoto();
   break;
  case R.id.get_photo:
   getPhoto();
   break;
  default:
   break;
  }
 }
 // 拍照
 private void takePhoto() {
  File appDir = new File(Environment.getExternalStorageDirectory(),
    "/etoury/picCache");
  if (!appDir.exists()) {
   appDir.mkdir();
  }
  String fileName = "user_head" + ".jpg";
  File outputImage = new File(appDir, fileName);
  try {
   if (outputImage.exists()) {
    outputImage.delete();
   }
   outputImage.createNewFile();
  } catch (IOException e) {
   e.printStackTrace();
  }
  headImgUri = Uri.fromFile(outputImage);
  Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
  intent.putExtra(MediaStore.EXTRA_OUTPUT, headImgUri);
  startActivityForResult(intent, TAKE_PHOTO);
 }
 // 定向到圖片庫
 private void getPhoto() {
  Intent intent = new Intent(Intent.ACTION_PICK,
    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
  startActivityForResult(intent, GET_PHOTO);
 }
 /**
  * 裁剪
  */
 private void crop(Uri uri) {
  // 裁剪圖片意圖
  Intent intent = new Intent("com.android.camera.action.CROP");
  intent.setDataAndType(uri, "image/*");
  // 下面這個(gè)crop=true是設(shè)置在開啟的Intent中設(shè)置顯示的VIEW可裁剪
  intent.putExtra("crop", "true");
  intent.putExtra("scale", true);// 去黑邊
  // 裁剪框的比例,1:1
  intent.putExtra("aspectX", 1);// 輸出是X方向的比例
  intent.putExtra("aspectY", 1);
  // 裁剪后輸出圖片的尺寸大小,不能太大500程序崩潰
  intent.putExtra("outputX", 256);
  intent.putExtra("outputY", 256);
  // 圖片格式
  /* intent.putExtra("outputFormat", "JPEG"); */
  intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
  // intent.putExtra("noFaceDetection", true);// 取消人臉識(shí)別
  intent.putExtra("return-data", true);// true:返回uri,false:不返回uri
  // 同一個(gè)地址下 裁剪的圖片覆蓋拍照的圖片
  intent.putExtra(MediaStore.EXTRA_OUTPUT, headImgUri);
  startActivityForResult(intent, CROP_PHOTO);
 }
 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  switch (requestCode) {
  case GET_PHOTO:
   if (resultCode == RESULT_OK) {
    crop(data.getData());
   }
   break;
  case TAKE_PHOTO:
   if (resultCode == RESULT_OK) {
    crop(headImgUri);
   }
   break;
  case CROP_PHOTO:
   if (resultCode == RESULT_OK) {
    Bitmap cropbitmap = data.getParcelableExtra("data");
    picture.setImageBitmap(cropbitmap);
   }
   break;
  default:
   break;
  }
 }
}

總結(jié):

1.  拍照返回一張圖片,可以是全尺寸的圖片

2.  拍照返回圖片的地址問題,一個(gè)目錄下的一個(gè)文件

3. 裁剪的圖片的地址, 覆蓋了全尺寸圖片的地址

4. 相冊(cè)intent 返回的是一個(gè)uir , 不是string

5. 裁剪的圖片,不能覆蓋相冊(cè)返回的uri(一定注意)

相關(guān)文章

  • Android Crash與ANR詳細(xì)介紹

    Android Crash與ANR詳細(xì)介紹

    對(duì)于Android開發(fā)的人來說,想必對(duì)Crash和ANR這倆都不陌生,并且都對(duì)其恨之入骨,因?yàn)樗鼈z的產(chǎn)生會(huì)大大影響用戶體驗(yàn)。所以,在此,結(jié)合本人的開發(fā)經(jīng)驗(yàn),對(duì)其做個(gè)總結(jié)
    2022-11-11
  • Android 消息機(jī)制以及handler的內(nèi)存泄露

    Android 消息機(jī)制以及handler的內(nèi)存泄露

    這篇文章主要介紹了Android 消息機(jī)制以及handler的內(nèi)存泄露的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • android球形水波百分比控件代碼

    android球形水波百分比控件代碼

    本篇文章主要是介紹android球形水波百分比控件,現(xiàn)在很多地方都能用的,有需要的可以來了解一下。
    2016-11-11
  • Android如何修改默認(rèn)gradle路徑的方法

    Android如何修改默認(rèn)gradle路徑的方法

    Android Studio每次新建項(xiàng)目,都會(huì)默認(rèn)在C盤生成并下載gradle相關(guān)文件,那么Android如何修改默認(rèn)gradle路徑的方法,本文就來介紹一下
    2023-08-08
  • Android實(shí)現(xiàn)標(biāo)題顯示隱藏功能

    Android實(shí)現(xiàn)標(biāo)題顯示隱藏功能

    這篇文章主要介紹了Android實(shí)現(xiàn)標(biāo)題顯示隱藏功能
    2016-02-02
  • Android組件ViewStub基本使用方法詳解

    Android組件ViewStub基本使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了Android組件ViewStub基本使用方法,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Android基于ibeacon實(shí)現(xiàn)藍(lán)牙考勤功能

    Android基于ibeacon實(shí)現(xiàn)藍(lán)牙考勤功能

    這篇文章主要為大家詳細(xì)介紹了Android基于ibeacon實(shí)現(xiàn)藍(lán)牙考勤功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Android小米推送簡(jiǎn)單使用方法

    Android小米推送簡(jiǎn)單使用方法

    這篇文章主要為大家詳細(xì)介紹了Android小米推送簡(jiǎn)單使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 詳解Android 視頻播放時(shí)停止后臺(tái)運(yùn)行的方法

    詳解Android 視頻播放時(shí)停止后臺(tái)運(yùn)行的方法

    這篇文章主要介紹了詳解Android 視頻播放時(shí)停止后臺(tái)運(yùn)行的方法的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Android?FileProvider使用教程

    Android?FileProvider使用教程

    主要摘要關(guān)鍵知識(shí)點(diǎn)和記錄我的學(xué)習(xí)思路及驗(yàn)證結(jié)論,可以幫助讀者比較全面的認(rèn)識(shí)FileProvider,F(xiàn)ileProvider是特殊的ContentProvider,目標(biāo)是在為保護(hù)隱私和數(shù)據(jù)安全而加強(qiáng)應(yīng)用沙箱機(jī)制的同時(shí),支持在應(yīng)用間共享文件
    2023-03-03

最新評(píng)論