From 23cb5200b7a8fb57af5e8006612181bae9c0c95d Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期五, 13 九月 2024 14:51:17 +0800 Subject: [PATCH] '功能完善' --- BuWanVideo/src/com/weikou/beibeivideo/ui/login/PersonInfoActivity.java | 95 +++++++++++++++++++---------------------------- 1 files changed, 39 insertions(+), 56 deletions(-) diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/login/PersonInfoActivity.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/login/PersonInfoActivity.java index 5d931d8..43e73fc 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/ui/login/PersonInfoActivity.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/login/PersonInfoActivity.java @@ -17,6 +17,8 @@ import android.os.Bundle; import android.provider.MediaStore; import androidx.annotation.NonNull; +import androidx.core.content.FileProvider; + import android.util.Base64; import android.util.Log; import android.view.LayoutInflater; @@ -63,6 +65,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import java.nio.file.Files; import java.util.Calendar; import java.util.Map; @@ -73,6 +76,7 @@ public class PersonInfoActivity extends BaseActivity implements View.OnClickListener, PermissionInterface { private String TAG = PersonInfoActivity.class.getSimpleName(); + private String BASE_FILE_DIR = Environment.getExternalStorageDirectory().getPath() + "/Download/YSDQImg"; private LinearLayout ll_portrait; private LinearLayout ll_nickName; @@ -97,6 +101,7 @@ @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); +// BASE_FILE_DIR = getCacheDir().getAbsolutePath(); setContentView(R.layout.activity_person_info); TopStatusSettings.setStatusViewAndDeepColor(this); ll_portrait = (LinearLayout) findViewById(R.id.ll_portrait_select); @@ -293,8 +298,12 @@ //鍥惧簱 Photo_crop crop = new Photo_crop();//鍒濆鍖� 鍥剧墖鍘嬬缉 File f = new File(uriClipUri.getPath());//鑾峰彇鍥剧墖 - if (crop.compressPhto(f, false)) {//鍘嬬缉骞朵繚瀛樻垚鍔� - Uri uri = Uri.parse("file://" + "/" + android.os.Environment.getExternalStorageDirectory().getPath() + "/YSDQImg/" + "avatar.png"); + if(!f.exists()){ + Log.i(TAG,"瑁佸壀鐨勫浘鐗囦笉瀛樺湪"); + } + String targetFilePath = BASE_FILE_DIR + "/avatar.png"; + if (crop.compressPhto(f, targetFilePath, false)) {//鍘嬬缉骞朵繚瀛樻垚鍔� + Uri uri = Uri.parse("file://" + "/" + targetFilePath); f = new File(uri.getPath()); imgBase64 = bitmapToBase64(f); iv_portrait.postDelayed(new Runnable() { @@ -316,9 +325,9 @@ * @param uri */ public void startPhotoZoom(Uri uri) { - File storageDir = new File(android.os.Environment.getExternalStorageDirectory().getPath() + "/YSDQImg/"); + File storageDir = new File(BASE_FILE_DIR); if (!storageDir.exists()) {//娌℃湁鏂囦欢澶瑰垯鍒涘缓 - storageDir.mkdir(); + storageDir.mkdirs(); } //com.android.camera.action.CROP锛岃繖涓猘ction鏄皟鐢ㄧ郴缁熻嚜甯︾殑鍥剧墖瑁佸垏鍔熻兘 Intent intent = new Intent("com.android.camera.action.CROP"); @@ -340,11 +349,15 @@ //uritempFile涓篣ri绫诲彉閲忥紝瀹炰緥鍖杣ritempFile if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + + File file = new File(BASE_FILE_DIR+"/"+ System.currentTimeMillis() + "_clip.jpg"); +// uriClipUri = FileProvider.getUriForFile(getApplicationContext(),getApplicationContext().getPackageName() + ".fileprovider",file); + //濡傛灉鏄�7.0鐨勭浉鍐� //璁剧疆瑁佸壀鐨勫浘鐗囧湴鍧�Uri - uriClipUri = Uri.parse("file://" + "/" + android.os.Environment.getExternalStorageDirectory().getPath() + "/YSDQImg/" + System.currentTimeMillis() + "_clip.jpg"); + uriClipUri = Uri.parse("file://" + "/" + BASE_FILE_DIR + "/"+ System.currentTimeMillis() + "_clip.jpg"); } else { - uriClipUri = Uri.parse("file://" + "/" + android.os.Environment.getExternalStorageDirectory().getPath() + "/YSDQImg/" + System.currentTimeMillis() + "_clip.jpg"); + uriClipUri = Uri.parse("file://" + "/" + BASE_FILE_DIR + "/" + System.currentTimeMillis() + "_clip.jpg"); } //Android 瀵笽ntent涓墍鍖呭惈鏁版嵁鐨勫ぇ灏忔槸鏈夐檺鍒剁殑锛屼竴鑸笉鑳借秴杩� 1M锛屽惁鍒欎細浣跨敤缂╃暐鍥� ,鎵�浠ユ垜浠鎸囧畾杈撳嚭瑁佸壀鐨勫浘鐗囪矾寰� intent.putExtra(MediaStore.EXTRA_OUTPUT, uriClipUri); @@ -720,55 +733,13 @@ @Override protected void onDestroy() { super.onDestroy(); - String filePath = android.os.Environment.getExternalStorageDirectory().getPath() + "/YSDQImg/"; + String filePath = BASE_FILE_DIR; if (new File(filePath).exists()) { FileUtils.deleteDirectory(filePath); } } class Photo_crop { - /** - * 鑾峰彇鐩稿唽鍥剧墖 - * - * @param uri - */ - public Uri startPhotoZoom(Uri uri, Context mContext) { - Uri uriClipUri = null; - //com.android.camera.action.CROP锛岃繖涓猘ction鏄皟鐢ㄧ郴缁熻嚜甯︾殑鍥剧墖瑁佸垏鍔熻兘 - Intent intent = new Intent("com.android.camera.action.CROP"); - intent.setDataAndType(uri, "image/*");//瑁佸壀鐨勫浘鐗噓ri鍜屽浘鐗囩被鍨� - intent.putExtra("crop", "true");//璁剧疆鍏佽瑁佸壀锛屽鏋滀笉璁剧疆锛屽氨浼氳烦杩囪鍓殑杩囩▼锛岃繕鍙互璁剧疆putExtra("crop", "circle") - if (Build.MANUFACTURER.equals("HUAWEI")) { //鍗庝负鐗规畩澶勭悊 涓嶇劧浼氭樉绀哄渾 - intent.putExtra("aspectX", 9998); - intent.putExtra("aspectY", 9999); - } else { - intent.putExtra("aspectX", 1);//瑁佸壀妗嗙殑 X 鏂瑰悜鐨勬瘮渚�,闇�瑕佷负鏁存暟 - intent.putExtra("aspectY", 1);//瑁佸壀妗嗙殑 Y 鏂瑰悜鐨勬瘮渚�,闇�瑕佷负鏁存暟 - } - intent.putExtra("outputX", 600);//杩斿洖鏁版嵁鐨勬椂鍊欑殑X鍍忕礌澶у皬銆� - intent.putExtra("outputY", 600);//杩斿洖鏁版嵁鐨勬椂鍊欑殑Y鍍忕礌澶у皬銆� - //瑁佸壀鏃舵槸鍚︿繚鐣欏浘鐗囩殑姣斾緥锛岃繖閲岀殑姣斾緥鏄�1:1 - intent.putExtra("scale", true); - //鏄惁鏄渾褰㈣鍓尯鍩焧rue锛岃缃簡涔熶笉涓�瀹氭湁鏁� - intent.putExtra("circleCrop", false); - //uritempFile涓篣ri绫诲彉閲忥紝瀹炰緥鍖杣ritempFile - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - //濡傛灉鏄�7.0鐨勭浉鍐� - //璁剧疆瑁佸壀鐨勫浘鐗囧湴鍧�Uri - uriClipUri = Uri.parse("file://" + "/" + android.os.Environment.getExternalStorageDirectory().getPath() + "/YSDQImg/" + "clip.jpg"); - } else { - uriClipUri = Uri.parse("file://" + "/" + android.os.Environment.getExternalStorageDirectory().getPath() + "/YSDQImg/" + "clip.jpg"); - } - Log.e("uriClipUri=====", "" + uriClipUri); - //Android 瀵笽ntent涓墍鍖呭惈鏁版嵁鐨勫ぇ灏忔槸鏈夐檺鍒剁殑锛屼竴鑸笉鑳借秴杩� 1M锛屽惁鍒欎細浣跨敤缂╃暐鍥� ,鎵�浠ユ垜浠鎸囧畾杈撳嚭瑁佸壀鐨勫浘鐗囪矾寰� - intent.putExtra(MediaStore.EXTRA_OUTPUT, uriClipUri); - intent.putExtra("return-data", false);//鏄惁灏嗘暟鎹繚鐣欏湪Bitmap涓繑鍥� - intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());//杈撳嚭鏍煎紡锛屼竴鑸涓築itmap鏍煎紡鍙婂浘鐗囩被鍨� - intent.putExtra("noFaceDetection", false);//浜鸿劯璇嗗埆鍔熻兘 - ((Activity) mContext).startActivityForResult(intent, 1002);//瑁佸壀瀹屾垚鐨勬爣璇� - return uriClipUri; - } - /** * 鍥剧墖鍘嬬缉鐨勬柟娉�(鍙槸鍐呭瓨鍑忓皯锛岄伩鍏峯om锛屽浘鐗囨湰韬湪disk鐩樹綋绉笉鍙�) * 鏄剧ず鐨凚itmap鍗犵敤鐨勫唴瀛樺皯涓�鐐癸紝杩樻槸闇�瑕佸幓璁剧疆鍔犺浇鐨勫儚绱犻暱搴﹀拰瀹藉害锛堝彉鎴愮缉鐣ュ浘锛� @@ -777,7 +748,7 @@ * @param crop 鏄惁鍓鍦嗗舰鍥剧墖 true 鏄� false 鍚� * @return */ - public boolean compressPhto(File mFile, boolean crop) { + public boolean compressPhto(File mFile,String targetFilePath, boolean crop) { // BitmapFactory杩欎釜绫诲氨鎻愪緵浜嗗涓В鏋愭柟娉曪紙decodeResource銆乨ecodeStream銆乨ecodeFile绛夛級鐢ㄤ簬鍒涘缓Bitmap銆� // 姣斿濡傛灉鍥剧墖鏉ユ簮浜庣綉缁滐紝灏卞彲浠ヤ娇鐢╠ecodeStream鏂规硶锛� // 濡傛灉鏄痵d鍗¢噷闈㈢殑鍥剧墖锛屽氨鍙互閫夋嫨decodeFile鏂规硶锛� @@ -797,8 +768,12 @@ String path = mFile.getPath(); String absPath = mFile.getAbsolutePath(); Bitmap bitmap = BitmapFactory.decodeFile(absPath, options); + try { - return saveBitmap(bitmap, "avatar.png", crop);//淇濆瓨鎴愬姛 + if(bitmap==null){ + bitmap = BitmapFactory.decodeStream(Files.newInputStream(mFile.toPath())); + } + return saveBitmap(bitmap, targetFilePath, crop);//淇濆瓨鎴愬姛 } catch (IOException e) { e.printStackTrace(); return false; @@ -835,27 +810,35 @@ * 淇濆瓨鏂囦欢锛� * * @param bitmap - * @param bitName 鏂囦欢鍚� + * @param path 鏂囦欢璺緞 * @param crop * @return * @throws IOException */ - private boolean saveBitmap(Bitmap bitmap, String bitName, boolean crop) throws IOException { + private boolean saveBitmap(Bitmap bitmap, String path, boolean crop) throws IOException { boolean save = false; - File storageDir = new File(Environment.getExternalStorageDirectory().getPath() + "/YSDQImg/"); + File storageDir = new File(BASE_FILE_DIR); if (!storageDir.exists()) {//娌℃湁鏂囦欢澶瑰垯鍒涘缓 storageDir.mkdir(); } String fileName; File file; - fileName = Environment.getExternalStorageDirectory().getPath() + "/YSDQImg/" + bitName; + fileName = path; file = new File(fileName); if (bitmap != null) { if (file.exists()) { file.delete(); } + // 鍒涘缓涓婄骇鏂囦欢澶� + if(!file.getParentFile().exists()) + { + file.getParentFile().mkdirs(); + } + // 鍒涘缓鏂囦欢 + if(!file.exists()){ + file.createNewFile(); + } FileOutputStream out; - out = new FileOutputStream(file); // 鏍煎紡涓� JPEG锛岀収鐩告満鎷嶅嚭鐨勫浘鐗囦负JPEG鏍煎紡鐨勶紝PNG鏍煎紡鐨勪笉鑳芥樉绀哄湪鐩稿唽涓� if (bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out)) { -- Gitblit v1.8.0