国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android拍照裁剪圖片

2020-04-11 11:06:06
字體:
來源:轉載
供稿:網友

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

<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/*");  // 下面這個crop=true是設置在開啟的Intent中設置顯示的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);// 取消人臉識別  intent.putExtra("return-data", true);// true:返回uri,false:不返回uri  // 同一個地址下 裁剪的圖片覆蓋拍照的圖片  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;  } }}

總結:

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

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

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

4. 相冊intent 返回的是一個uir , 不是string

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 九龙城区| 都兰县| 乾安县| 美姑县| 秀山| 璧山县| 华池县| 泽州县| 武穴市| 聂拉木县| 吉安市| 台中县| 孝义市| 碌曲县| 乌鲁木齐市| 湛江市| 信阳市| 隆安县| 永春县| 南召县| 肇州县| 新绛县| 孝感市| 平泉县| 竹溪县| 河源市| 囊谦县| 太仆寺旗| 清徐县| 连云港市| 定边县| 墨江| 台江县| 尼玛县| 霍城县| 威远县| 曲阜市| 延寿县| 海丰县| 绵阳市| 沿河|