使用Java代碼在Android中實現(xiàn)圖片裁剪功能
前言
Android應(yīng)用中經(jīng)常會遇到上傳相冊圖片的需求,這里記錄一下如何進行相冊圖片的選取和裁剪。
相冊選取圖片
1. 激活相冊或是文件管理器,來獲取相片,代碼如下:
private static final int TAKE_PICTURE_FROM_ALBUM = 1;
private void takePictureFromAlbum() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, TAKE_PICTURE_FROM_ALBUM);
}
2. 通過startAcitivityForResult()方法,我們可以在onAcitivityResult()中來獲取圖片的URI,然后將圖片的URI傳遞給圖片裁剪函數(shù),代碼如下:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {
switch (requestCode) {
case TAKE_PICTURE_FROM_ALBUM:
if (data != null) {
cropPictureFromAlbum(data.getData());
}
break;
case PICTURE_CROP_CODE:
if (data != null) {
// 這是裁剪后圖片的bitmap
Bitmap bitmap = data.getParcelableExtra("data");
}
break;
default:
break;
}
}
}
private static final int TAKE_PICTURE_FROM_ALBUM = 1;
private void takePictureFromAlbum() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, TAKE_PICTURE_FROM_ALBUM);
}
private static final int PICTURE_CROP_CODE = 2;
private void cropPictureFromAlbum(Uri pictureUri) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(pictureUri, "image/*");
intent.putExtra("crop", "true");
// 裁剪框比例
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 2);
// 裁剪后輸入圖片的尺寸大小
intent.putExtra("outputX", 300);
intent.putExtra("outputY", 300);
// 取消人臉識別
intent.putExtra("noFaceDetection", true);
intent.putExtra("return-data", true);
startActivityForResult(intent, PICTURE_CROP_CODE);
}
3. 在onActivityResult里,通過data.getParcelableExtra("data")可以獲取圖片裁剪之后的bitmap,之后就可以將bitmap賦值給圖片控件了。
相關(guān)文章
Android開發(fā)中DatePicker日期與時間控件實例代碼
本文通過實例代碼給大家介紹了Android開發(fā)中DatePicker日期與時間控件,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-08-08
Android自定義View實現(xiàn)微信支付密碼輸入框
這篇文章主要為大家詳細介紹了Android自定義View實現(xiàn)微信支付密碼輸入框,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-06-06
Android studio配置國內(nèi)鏡像源的實現(xiàn)
這篇文章主要介紹了Android studio配置國內(nèi)鏡像源的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
android開發(fā)教程之實現(xiàn)listview下拉刷新和上拉刷新效果
這篇文章主要介紹了android實現(xiàn)listview下拉刷新和上拉刷新效果,Android的ListView上拉下拉刷新,原理都一樣,在Touch事件中操作header/footer的paddingTop屬性,需要的朋友可以參考下2014-02-02
Android TextView字體顏色設(shè)置方法小結(jié)
這篇文章主要介紹了Android TextView字體顏色設(shè)置方法,結(jié)合實例形式總結(jié)分析了Android開發(fā)中TextView設(shè)置字體顏色的常用技巧,需要的朋友可以參考下2016-02-02
淺析AndroidStudio3.0最新 Android Profiler分析器(cpu memory network
Android Profiler分為三大模塊: cpu、內(nèi)存 、網(wǎng)絡(luò)。本文給大家介紹AndroidStudio3.0最新 Android Profiler分析器(cpu memory network 分析器)的相關(guān)知識,他們的基本使用方法,在文中都給大家提到,具體內(nèi)容詳情大家通過本文一起學(xué)習(xí)吧2017-12-12
Android中點擊按鈕啟動另一個Activity及Activity之間傳值問題
這篇文章主要介紹了Android中點擊按鈕啟動另一個Activity及Activity之間傳值問題,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-01-01

