最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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);
 }
 // 定向到圖片庫(kù)
 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è)置在開(kāi)啟的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.  拍照返回圖片的地址問(wèn)題,一個(gè)目錄下的一個(gè)文件

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

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

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

相關(guān)文章

  • Android中用onSaveInstanceState保存Fragment狀態(tài)的方法

    Android中用onSaveInstanceState保存Fragment狀態(tài)的方法

    這篇文章主要介紹了Android中用onSaveInstanceState保存Fragment狀態(tài)的方法,onSaveInstanceState可以將數(shù)據(jù)保存在Fragment或Activity中,需要的朋友可以參考下
    2016-04-04
  • Android使用EditText小技巧匯總

    Android使用EditText小技巧匯總

    這篇文章主要介紹了Android使用EditText的小技巧匯總,幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下
    2021-05-05
  • Android retrofit上傳文件實(shí)例(包含頭像)

    Android retrofit上傳文件實(shí)例(包含頭像)

    下面小編就為大家分享一篇Android retrofit上傳文件實(shí)例(包含頭像),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • Android模仿Toast實(shí)現(xiàn)提示框效果

    Android模仿Toast實(shí)現(xiàn)提示框效果

    這篇文章主要為大家詳細(xì)介紹了Android模仿Toast實(shí)現(xiàn)提示框效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Android實(shí)現(xiàn)Path平滑的涂鴉效果實(shí)例

    Android實(shí)現(xiàn)Path平滑的涂鴉效果實(shí)例

    這篇文章主要給大家介紹了關(guān)于Android實(shí)現(xiàn)Path平滑涂鴉效果的相關(guān)資料,通過(guò)本文介紹的方法修改后會(huì)讓線條平滑很多,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • 基于Android MarginLeft與MarginStart的區(qū)別(詳解)

    基于Android MarginLeft與MarginStart的區(qū)別(詳解)

    下面小編就為大家分享一篇基于Android MarginLeft與MarginStart的區(qū)別(詳解),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • 一文講解Kotlin中的contract到底有什么用

    一文講解Kotlin中的contract到底有什么用

    我們?cè)陂_(kāi)發(fā)中肯定會(huì)經(jīng)常用Kotlin提供的一些通用拓展函數(shù),當(dāng)我們進(jìn)去看源碼的時(shí)候會(huì)發(fā)現(xiàn)許多函數(shù)里面有contract{}包裹的代碼塊,那么這些代碼塊到底有什么作用呢?下面這篇文章主要給大家介紹了關(guān)于Kotlin中contract到底有什么用的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • 淺析KJFrameForAndroid框架如何高效加載Bitmap

    淺析KJFrameForAndroid框架如何高效加載Bitmap

    Bitmap是Android系統(tǒng)中的圖像處理的最重要類之一。用它可以獲取圖像文件信息,進(jìn)行圖像剪切、旋轉(zhuǎn)、縮放等操作,并可以指定格式保存圖像文件。本文主要是從KJFrameForAndroid框架中分析高效加載Bitmap的方法
    2014-07-07
  • Android Rsa數(shù)據(jù)加解密的介紹與使用示例

    Android Rsa數(shù)據(jù)加解密的介紹與使用示例

    RSA是第一個(gè)既能用于數(shù)據(jù)加密也能用于數(shù)字簽名的算法。它易于理解和操作,也很流行。想起自己曾經(jīng)使用過(guò)的Rsa非對(duì)稱加密算法,閑下來(lái)總結(jié)一下。方便自己和大家以后使用的時(shí)候參考借鑒。下面來(lái)一起看看吧。
    2016-09-09
  • Android從系統(tǒng)Gallery獲取圖片具體實(shí)現(xiàn)

    Android從系統(tǒng)Gallery獲取圖片具體實(shí)現(xiàn)

    這篇文章主要介紹了Android從系統(tǒng)Gallery獲取圖片具體實(shí)現(xiàn),有需要的朋友可以參考一下
    2013-12-12

最新評(píng)論

北海市| 祁连县| 三河市| 仙居县| 仪陇县| 株洲市| 梁平县| 西畴县| 金沙县| 筠连县| 高密市| 漠河县| 北京市| 北碚区| 青岛市| 海门市| 城市| 西充县| 赣榆县| 镇康县| 阳东县| 邢台市| 通山县| 巴林右旗| 香格里拉县| 巧家县| 乳山市| 丹凤县| 海安县| 通山县| 禄丰县| 城步| 潜江市| 八宿县| 星座| 广德县| 铜梁县| 阜新| 阳泉市| 杭州市| 即墨市|