Android從相冊(cè)選擇圖片剪切和上傳
本文實(shí)例為大家分享了Android剪切和上傳圖片的具體代碼,供大家參考,具體內(nèi)容如下
1、從Android系統(tǒng)相冊(cè)選擇一張圖片getImageFromAlbum():
/** * 從圖庫(kù)獲得照片 */ protected void getImageFromAlbum() { isImgs = true; // MainApplication.changeSettingStateus = true; Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*");// 相片類型 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); intent.putExtra("outputX", 360); intent.putExtra("outputY", 360); intent.putExtra("scale", true); intent.putExtra("return-data", true); // intent.putExtra("outputFormat", // Bitmap.CompressFormat.JPEG.toString()); intent.putExtra("noFaceDetection", true); // no face detection startActivityForResult(intent, 1); }
2、在onActivityResult()方法中:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { String text; switch (requestCode) { case 1: Uri selectedImage = data.getData(); CutPic(selectedImage); break; case 3:// 對(duì)圖片進(jìn)行剪切 if (data != null) { Bitmap bitmap = data.getParcelableExtra("data"); temps = zoomImage(bitmap, 360, 360); // 上傳圖片 uploadImg(temps); } break; default: break; } } }
3、圖片剪切 CutPic(selectedImage);
/** * 將圖片裁剪到指定大小 * * @param uri * @param size * @param flag */ public void CutPic(Uri uri) { Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); intent.putExtra("crop", true);// 設(shè)置Intent中的view是可以裁剪的 // 設(shè)置寬高比 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // 設(shè)置裁剪圖片的寬高 intent.putExtra("outputX", 360); intent.putExtra("outputY", 360); intent.putExtra("outputFormat", "JPEG");// 圖片格式 // 設(shè)置是否返回?cái)?shù)據(jù) intent.putExtra("return-data", true); // 開啟一個(gè)帶有返回值的Activity,請(qǐng)求碼為3 startActivityForResult(intent, 3); }
4、圖片壓縮剪切zoomImage(bitmap, 360, 360);
/*** * 圖片的縮放方法 * * @param bgimage * :源圖片資源 * @param newWidth * :縮放后寬度 * @param newHeight * :縮放后高度 * @return */ public static Bitmap zoomImage(Bitmap bgimage, double newWidth, double newHeight) { // 獲取這個(gè)圖片的寬和高 float width = bgimage.getWidth(); float height = bgimage.getHeight(); // 創(chuàng)建操作圖片用的matrix對(duì)象 Matrix matrix = new Matrix(); // 計(jì)算寬高縮放率 float scaleWidth = ((float) newWidth) / width; float scaleHeight = ((float) newHeight) / height; // 縮放圖片動(dòng)作 matrix.postScale(scaleWidth, scaleHeight); Bitmap bitmap = Bitmap.createBitmap(bgimage, 0, 0, (int) width, (int) height, matrix, true); return bitmap; }
5、上傳圖片文件至服務(wù)器uploadImg(bitMaps);
/** * 上傳圖片 * * @param bitP */ private void uploadImg(final Bitmap bitP) { // 將Bitmap轉(zhuǎn)換成字符串 String string = null; ByteArrayOutputStream bStream = new ByteArrayOutputStream(); bitP.compress(CompressFormat.JPEG, 100, bStream); byte[] bytes = bStream.toByteArray(); string = Base64.encodeToString(bytes, Base64.DEFAULT); try { bStream.close(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } //string 文件上傳服務(wù)器... }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android Studio項(xiàng)目中導(dǎo)入開源庫(kù)的方法
這篇文章主要介紹了Android Studio項(xiàng)目中導(dǎo)入開源庫(kù)的方法,即使用第三方庫(kù)、第三廣場(chǎng)框架的方法,需要的朋友可以參考下2015-06-06Kotlin中List的Lambda表達(dá)式應(yīng)用與解析實(shí)例詳解
相比于Java的Lambda表達(dá)式只是一種簡(jiǎn)化寫法,Kotlin中的Lambda功能極為強(qiáng)大,本文介紹Kotlin中List的Lambda表達(dá)式應(yīng)用與解析,感興趣的朋友一起看看吧2024-03-03Android DataBinding單向數(shù)據(jù)綁定深入探究
看了谷歌官方文章確實(shí)寫的太簡(jiǎn)略了,甚至看完之后有很多地方還不知道怎么回事兒或者怎么用,那么接下來我將通過文章全面介紹一下DataBinding單向數(shù)據(jù)綁定2022-11-11Android實(shí)現(xiàn)簡(jiǎn)易瀏覽器遇到問題的解決方法
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)簡(jiǎn)易瀏覽器遇到的一系列問題的解決方法,感興趣的小伙伴們可以參考一下2016-06-06Android實(shí)現(xiàn)計(jì)步傳感器功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)計(jì)步傳感器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01Flutter 插件url_launcher簡(jiǎn)介
最近項(xiàng)目需求是打開一個(gè)連接跳轉(zhuǎn)到安卓或蘋果默認(rèn)的瀏覽器。雖然開始一個(gè)簡(jiǎn)單的要求,其中的一個(gè)細(xì)節(jié)就是執(zhí)行打開網(wǎng)頁(yè)這一操作后,不能看上去像在應(yīng)用內(nèi)部打開,看上去要在應(yīng)用外部打開,今天小編給大家介紹Flutter 插件url_launcher的相關(guān)知識(shí),感興趣的朋友一起看看吧2020-04-04Android 彈出Dialog時(shí)隱藏狀態(tài)欄和底部導(dǎo)航欄的方法
這篇文章主要介紹了Android 彈出Dialog時(shí)隱藏狀態(tài)欄和底部導(dǎo)航欄的實(shí)例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07Android實(shí)現(xiàn)簡(jiǎn)單計(jì)算器
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)簡(jiǎn)單計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10鴻蒙手機(jī)版JNI實(shí)戰(zhàn)案例解析(JNI開發(fā)、SO庫(kù)生成、SO庫(kù)使用)
這篇文章主要介紹了鴻蒙手機(jī)版JNI實(shí)戰(zhàn)(JNI開發(fā)、SO庫(kù)生成、SO庫(kù)使用)的相關(guān)資料,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04