1. 程式人生 > >Android開發之 選擇相簿圖片或者拍照

Android開發之 選擇相簿圖片或者拍照

在我們的Android開發中肯定都會遇到要選擇本地相簿的圖片或者是用相機進行拍照使用圖片。

簡單的講解一下如何使用,比如我們要上傳頭像時總會使用的。這個步驟一般就是:1.點選頭像然後會彈出一個選單,然後我們選擇是從相簿中選擇圖片還是使用相機拍照;2.選擇照片或者拍照以後儲存後照片的Id。基本就是這個樣子比較簡單的功能


public class MainActivity extends Activity {

    private static final int PHOTO_REQUEST_CAMERA = 1;// 拍照
    private static final int PHOTO_REQUEST_GALLERY = 2
;// 從相簿中選擇 private static final int PHOTO_REQUEST_CUT = 3;// 結果 private ImageView mFace; private Bitmap bitmap; /* 頭像名稱 */ private static final String PHOTO_FILE_NAME = "temp_photo.jpg"; private File tempFile; @Override protected void onCreate(Bundle savedInstanceState) { super
.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.mFace = (ImageView) this.findViewById(R.id.iv_image); } /* * 從相簿獲取 */ public void gallery(View view) { // 啟用系統圖庫,選擇一張圖片 Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*"
); this.startActivityForResult(intent, PHOTO_REQUEST_GALLERY); } /* * 從相機獲取 */ public void camera(View view) { Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); // 判斷儲存卡是否可以用,可用進行儲存 if (hasSdcard()) { intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment .getExternalStorageDirectory(), PHOTO_FILE_NAME))); } this.startActivityForResult(intent, PHOTO_REQUEST_CAMERA); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == PHOTO_REQUEST_GALLERY) { if (data != null) { // 得到圖片的全路徑 Uri uri = data.getData(); crop(uri); } } else if (requestCode == PHOTO_REQUEST_CAMERA) { if (hasSdcard()) { tempFile = new File(Environment.getExternalStorageDirectory(), PHOTO_FILE_NAME); crop(Uri.fromFile(tempFile)); } else { Toast.makeText(MainActivity.this, "未找到儲存卡,無法儲存照片!", 0).show(); } } else if (requestCode == PHOTO_REQUEST_CUT) { try { bitmap = data.getParcelableExtra("data"); this.mFace.setImageBitmap(bitmap); boolean delete = tempFile.delete(); System.out.println("delete = " + delete); } catch (Exception e) { e.printStackTrace(); } } super.onActivityResult(requestCode, resultCode, data); } /** * 剪下圖片 * * @function: * @author:Jerry * @date:2013-12-30 * @param uri */ private void crop(Uri uri) { // 裁剪圖片意圖 Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); intent.putExtra("crop", "true"); // 裁剪框的比例,1:1 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // 裁剪後輸出圖片的尺寸大小 intent.putExtra("outputX", 250); intent.putExtra("outputY", 250); // 圖片格式 intent.putExtra("outputFormat", "JPEG"); intent.putExtra("noFaceDetection", true);// 取消人臉識別 intent.putExtra("return-data", true);// true:不返回uri,false:返回uri startActivityForResult(intent, PHOTO_REQUEST_CUT); } //判斷是否有Sd card private boolean hasSdcard() { if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { return true; } else { return false; } }

佈局檔案:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="gallery"
        android:text="獲取相簿圖片" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="camera"
        android:text="拍照獲取圖片" />

    <ImageView
        android:id="@+id/iv_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:onClick="upload"        
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="上傳" />

</LinearLayout>

相關推薦

Android開發 選擇相簿圖片或者拍照

在我們的Android開發中肯定都會遇到要選擇本地相簿的圖片或者是用相機進行拍照使用圖片。 簡單的講解一下如何使用,比如我們要上傳頭像時總會使用的。這個步驟一般就是:1.點選頭像然後會彈出一個選單,然後我們選擇是從相簿中選擇圖片還是使用相機拍照;2.選擇照片或

android 小米手機選擇相簿圖片擷取照片不進onActivityResult報“儲存時發生錯誤,儲存失敗”

小米選擇相簿時如果不使用系統截圖,直接壓縮不會報“儲存時發生錯誤,儲存失敗”的錯誤,如果截圖就會報如上錯誤。需要把URI地址轉為圖片地址,再包成file檔案轉為URI Uri uri = intent.

Android開發listview優化+圖片非同步載入+避免圖片顯示閃爍(修改版)

小鹿路過此地。。心熱之下寫寫Android開發中的listview運用(閒的沒事幹,改動了一點程式碼,但實現功能不變) 小鹿學Android開發已有兩年多了,總算有一點點小收穫,雖算不上大牛大神級人物,但有些東西可以和一家一起分享一起交流一起學習一起進步...。還有,望檢視

Android開發呼叫相機拍照與本地相簿選擇圖片

使用者看到的介面如下,也是我的xml介面: demo中有一個按鈕,點選彈出對話方塊提示使用者選擇:拍照、相簿。如下圖: 點選拍照,會開啟手機相機開始拍照,拍攝完後可以裁剪,如下圖: 這時候你可以直接點選確定,也可

Android開發裁切(拍照+相簿)影象並設定頭像小結

先看效果:                                                   再貼程式碼: 自定義選擇照片底部彈出對話方塊佈局: <?xml version="1.0" encoding="utf-8"?> <Re

Android開發呼叫相機拍照和呼叫系統相簿

Android應用程式中呼叫相機進行拍照和選擇相簿中的照片是經常會使用到的,那麼我們就來實現以下這個功能。 首先建立一個工程CameraTest,佈局檔案一個ImageView,兩個Button。 <?xml version="1.0" en

微信公眾號開發選擇圖片,上傳圖片,下載圖片,顯示圖片

function clickImg(that){ wx.chooseImage({ count: 1, needResult: 1, sizeType: ['original', 'compressed'], // 可以指定是原圖還是壓

Android開發實現圖片自動滾動顯示標籤的ViewPager

      Android中實現圖片自動滾動的效果非常的常見,我們可以自己動畫去實現功能。但是在Android中提供了一個ViewPager類,實現了滾動效果,在Android的extras目錄下android-support-vx.jar中,x代表版本4,7等等。使用時我

Android應用開發PDF轉圖片功能實現

一、概述 轉眼畢業小兩年了,回想這兩年寫的程式碼,不由得想起了上學那會兒某位網際網路大牛說,搞IT這行如果你沒有寫夠十萬行程式碼,那你就還沒有入門,俺這個時候真的有點汗顏啊,此處省略十萬字。小編最近開始整理這兩年寫的程式碼,不由得首先想起了今天要寫的這個功能—

android開發&使用ViewPager加gridView實現選單按鈕分頁滑動(類似QQ表情選擇翻頁效果)

剛做的專案中要用到選單分頁,以前沒做過,仔細想了想,既然是分頁,肯定就少不了ViewPager,大家都知道gridView可以實現九宮格,剛好滿足我們的需求,我做的是gridview單行顯示,大家如果需要向QQ表情一樣多行顯示,直接修改資料來源就可以。 好了,上程式碼 pu

Android開發呼叫攝像頭拍照

現在很多應用中都會要求使用者上傳一張圖片來作為頭像,首先我在這接收使用相機拍照和在相簿中選擇圖片。接下來先上效果圖: 接下來看程式碼: 1,佈局檔案: <?xml version="1.0" encoding="utf-8"?> <

android開發用阿里雲OSS載入圖片

概要 阿里雲物件儲存(Object Storage Service,簡稱OSS),是阿里雲對外提供的海量,安全,低成本,高可靠的雲端儲存服務。使用者可以通過呼叫API,在任何應用、任何時間、任何地點上傳和下載資料,也可以通過使用者Web控制檯對資料進行簡單的管理。OSS適合

Android開發實現最簡單最酷炫的3D圖片瀏覽效果(一)

一、原理 整體實現是以手機螢幕的正中間位置為對稱軸,位於正中間的圖片顯示最大,也最亮,同時左右兩邊的圖片以最中間位置為對稱軸,分別旋轉對應的角度,同時亮度調整為適當的比例,已達到對稱的效果。具體的3D瀏覽圖片效果,我是通過自定義Gallery來實現的,建立一個類Galler

Android開發自定義圓角矩形圖片ImageView

android中的ImageView只能顯示矩形的圖片,這樣一來不能滿足我們其他的需求,比如要顯示圓角矩形的圖片,這個時候,我們就需要自定義ImageView了,其原理就是首先獲取到圖片的Bitmap,然後進行裁剪對應的圓角矩形的bitmap,然後在onDraw()進行繪製

Android開發TabLayout真正實現底部導航欄(可實現點選文字顏色圖片切換)

前言:關於這個TabLayout實現底部導航,在我的上篇《Android開發之TabLayout實現底部導航欄》部落格中有提到,但是後面在仔細的接觸專案中,發現了裡面有很多沒有解決的事情,比如不能實現點選文字顏色和圖片的切換,不能做到禁止左右滑動,所以趁著今天有時間的情況下

Android開發拍照

1.請求使用相機的許可權 若使用相機是應用的必要功能,想要它在應用Google player裡僅對有相機的裝置的可見。我們可以在清單檔案(Manifest)中新增標籤: <manifest ... > <uses-featur

Android開發如何在WebView中點選連結使用自身開啟(解決出現的選擇使用第三方應用的問題)

最近在學習Android基礎開發的時候,學到了WebView這一部分,發現按照最基本的編寫方式,每次系統都提示使用第三方應用開啟(使用紅米1s作為測試機型,MIUI6.7.1.0)。百度後得到答案: package demo.androidyue.webview; 

Android開發控制攝像頭拍照

        現在的手機一般都會提供相機功能,有些相機的鏡頭甚至支援1300萬以上畫素,有些甚至支援獨立對焦、光學變焦這些只有單反才有的功能,甚至有些手機直接宣傳可以拍到星星。可以說手機已經變成了專業數碼相機。為了充分利用手機上的相機功能, Android系統提供了Cam

Android開發實現最簡單最酷炫的3D圖片瀏覽效果(二)

          (一)截圖                      (二)實現關鍵:           1、改寫Gallery,實現圖片的層疊和透明度漸變。 主要是改寫getChildStaticTransformation方法           2、對圖片進行

Android開發網路圖片檢視方法BitmapFactory.decodeStream()學習01

Android實現網路圖片的檢視有好幾種方法,但這本身是一種很耗時的操作,可以通過直接獲取和操作執行緒的方法,自己學習使用了BitmapFactory.decodeStream()在程式碼中自己寫了註釋,大致分為以下幾步: ①設定URL物件和連線  ②設定一下在連線和讀取過