// PictureSelector 基础 (必须)implementation 'io.github.lucksiege:pictureselector:v3.10.1'//图片压缩implementation 'com.github.nanchen2251:CompressHelper:1.0.5'

涉及到了 图片压缩 文件压缩 还有文件选择适配

package com.as.zqfjavasample.wxui;import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;import com.as.zqfjavasample.R;
import com.as.zqfjavasample.base.base_ui.activity.BaseActivity;
import com.as.zqfjavasample.base.glide_utils.GlideEngine;
import com.as.zqfjavasample.base.http.BeanCallback_NoDialog;
import com.as.zqfjavasample.databinding.ActivityWxShowDetailBinding;
import com.blankj.utilcode.constant.PermissionConstants;
import com.blankj.utilcode.util.BarUtils;
import com.blankj.utilcode.util.PermissionUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.target.SimpleTarget;
import com.bumptech.glide.request.transition.Transition;
import com.luck.picture.lib.basic.PictureSelector;
import com.luck.picture.lib.config.SelectMimeType;
import com.luck.picture.lib.engine.UriToFileTransformEngine;
import com.luck.picture.lib.entity.LocalMedia;
import com.luck.picture.lib.interfaces.OnKeyValueResultCallbackListener;
import com.luck.picture.lib.utils.SandboxTransformUtils;
import com.luliang.shapeutils.DevShapeUtils;
import com.luliang.shapeutils.shape.DevShape;
import com.lzy.okgo.OkGo;
import com.nanchen.compresshelper.CompressHelper;import org.json.JSONObject;import java.io.File;
import java.util.ArrayList;
import java.util.List;import okhttp3.Response;public class WxShowDetailActivity extends BaseActivity<ActivityWxShowDetailBinding> {private static final int REQUEST_CODE_CHOOSE2 = 200;private static final int REQUEST_CODE_CHOOSE = 100;private String path;private String path1;private int type;
//    private File file0;
//    private File file1;@Overrideprotected int getLayoutId() {return R.layout.activity_wx_show_detail;}@Overrideprotected void getBundleExtras(Bundle extras) {type = extras.getInt("type");}@Overrideprotected void initBar() {super.initBar();BarUtils.setStatusBarLightMode(this, true);BarUtils.setStatusBarColor(this, Color.parseColor("#00aaff"));}@Overrideprotected void initView() {DevShapeUtils.shape(DevShape.RECTANGLE).radius(12).solid("#00aaff").into(mViewBinding.tvSave);List<String> names = new ArrayList<String>() {{add("领悟学堂");add("吉祥物");add("直播");}};mViewBinding.tvName.setText(names.get(type - 1));}@Overrideprotected void initData() {mViewBinding.ivUpload.setOnClickListener(new View.OnClickListener() {@SuppressLint("WrongConstant")@Overridepublic void onClick(View v) {PermissionUtils.permission(PermissionConstants.STORAGE).callback(new PermissionUtils.SimpleCallback() {@Overridepublic void onGranted() {PictureSelector.create(WxShowDetailActivity.this).openGallery(SelectMimeType.ofImage()).setMaxSelectNum(1).setImageEngine(GlideEngine.createGlideEngine()).setSandboxFileEngine(new UriToFileTransformEngine() {@Overridepublic void onUriToFileAsyncTransform(Context context, String srcPath, String mineType, OnKeyValueResultCallbackListener call) {if (call != null) {String sandboxPath = SandboxTransformUtils.copyPathToSandbox(context, srcPath, mineType);call.onCallback(srcPath,sandboxPath);}}}).forResult(REQUEST_CODE_CHOOSE);}@Overridepublic void onDenied() {}}).request();}});mViewBinding.ivUploadShare.setOnClickListener(new View.OnClickListener() {@SuppressLint("WrongConstant")@Overridepublic void onClick(View v) {PermissionUtils.permission(PermissionConstants.STORAGE).callback(new PermissionUtils.SimpleCallback() {@Overridepublic void onGranted() {PictureSelector.create(WxShowDetailActivity.this).openGallery(SelectMimeType.ofImage()).setMaxSelectNum(1).setImageEngine(com.as.zqfjavasample.base.glide_utils.GlideEngine.createGlideEngine()).setSandboxFileEngine(new UriToFileTransformEngine() {@Overridepublic void onUriToFileAsyncTransform(Context context, String srcPath, String mineType, OnKeyValueResultCallbackListener call) {if (call != null) {String sandboxPath = SandboxTransformUtils.copyPathToSandbox(context, srcPath, mineType);call.onCallback(srcPath,sandboxPath);}}}).forResult(REQUEST_CODE_CHOOSE2);}@Overridepublic void onDenied() {}}).request();}});}@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);if (resultCode == -1 && data != null) {switch (requestCode) {case REQUEST_CODE_CHOOSE:List<LocalMedia> selectList = PictureSelector.obtainSelectorList(data);if (selectList.size() > 0) {LocalMedia localMedia = selectList.get(selectList.size() - 1);path = localMedia.getSandboxPath();Glide.with(WxShowDetailActivity.this).asBitmap().load(path).into(new SimpleTarget<Bitmap>() {@Overridepublic void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {//将要保存图片的路径
//                                        file0 = new File(""+System.currentTimeMillis());
//                                        try {
//                                            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file0));
//                                            resource.compress(Bitmap.CompressFormat.JPEG, 100, bos);
//                                            bos.flush();
//                                            bos.close();
//                                        } catch (IOException e) {
//                                            e.printStackTrace();
//                                        }int dimension = (int) getResources().getDimension(R.dimen.dp180);int intrinsicWidth = resource.getWidth();int intrinsicHeight = resource.getHeight();mViewBinding.ivUpload.getLayoutParams().width = dimension;mViewBinding.ivUpload.getLayoutParams().height = dimension * intrinsicHeight / intrinsicWidth;mViewBinding.ivUpload.setImageBitmap(resource);}});}break;case REQUEST_CODE_CHOOSE2:List<LocalMedia> selectList2 = PictureSelector.obtainSelectorList(data);if (selectList2.size() > 0) {LocalMedia localMedia = selectList2.get(selectList2.size() - 1);path1 = localMedia.getSandboxPath();System.out.println(" xxxx  :"+path1);Glide.with(WxShowDetailActivity.this).asBitmap().load(path1).into(new SimpleTarget<Bitmap>() {@Overridepublic void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {int dimension = (int) getResources().getDimension(R.dimen.dp180);int intrinsicWidth = resource.getWidth();int intrinsicHeight = resource.getHeight();mViewBinding.ivUploadShare.getLayoutParams().width = dimension;mViewBinding.ivUploadShare.getLayoutParams().height = dimension * intrinsicHeight / intrinsicWidth;mViewBinding.ivUploadShare.setImageBitmap(resource);}});}break;}}}@Overrideprotected void initListener() {mViewBinding.ivback.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {finish();}});mViewBinding.tvSave.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String strJieshao = mViewBinding.editJieshao.getText().toString();
//                if(TextUtils.isEmpty(strJieshao)){
//                    ToastUtils.showShort("请输入文字介绍");
//                    return;
//                }if (TextUtils.isEmpty(path)) {ToastUtils.showShort("请上传图片");return;}String strUrl = mViewBinding.editUrl.getText().toString();if (TextUtils.isEmpty(strUrl)) {ToastUtils.showShort("请输入跳转链接");return;}String strTitle = mViewBinding.editTitle.getText().toString();if (TextUtils.isEmpty(strTitle)) {ToastUtils.showShort("请输入分享标题");return;}String strDesc = mViewBinding.editDesc.getText().toString();if (TextUtils.isEmpty(strDesc)) {ToastUtils.showShort("请输入内容描述");return;}if (TextUtils.isEmpty(path1)) {ToastUtils.showShort("请上传分享图片");return;}System.out.println(" path " + path);System.out.println(" path1 " + path1);ArrayList<File> list = new ArrayList<>();list.add(CompressHelper.getDefault(WxShowDetailActivity.this).compressToFile(new File(path)));ArrayList<File> list1 = new ArrayList<>();list1.add(CompressHelper.getDefault(WxShowDetailActivity.this).compressToFile(new File(path1)));System.out.println(" type " + type);System.out.println(" desc " + strJieshao);System.out.println(" image " + list.get(0));System.out.println(" f_title " + strTitle);System.out.println(" f_content " + strDesc);System.out.println(" f_img " + list1.get(0));System.out.println(" link " + strUrl);OkGo.<Object>post("").params("type", type).params("desc", strJieshao).addFileParams("image", list).params("f_title", strTitle).params("f_content", strDesc).addFileParams("f_img", list1).params("link", strUrl).tag(this).execute(new BeanCallback_NoDialog<Object>() {@Overridepublic Object convertResponse(Response response) throws Throwable {String string = response.body().string();System.out.println(" string  : " + string);JSONObject jsonObject = new JSONObject(string);int code = jsonObject.getInt("code");if (code == 200) {runOnUiThread(new Runnable() {@Overridepublic void run() {WxShowDetailActivity.this.finish();}});} else {String message = jsonObject.getString("message");ToastUtils.showShort(message + "");}return super.convertResponse(response);}});}});}
}

Android 本地图片相册选择相关推荐

  1. Android 实现图片相册选择+拍照,并在选中的图片右上角添加删除图标。

    效果图: 一.在app的build中引入相应的框架 //recyclerview implementation "androidx.recyclerview:recyclerview:1.1 ...

  2. android拍照所需的权限,eclipse --- Android拍照,相册选择图片以及Android6.0权限管理...

    [实例简介] eclipse --- Android拍照,相册选择图片以及Android6.0权限管理 [实例截图] [核心代码] camreainandroidm └── camreainandro ...

  3. Android 拍照和相册选择

    前几天一直在想写一个简单干净的关于Android 拍照和相册选择的dome,直到今天才有时间去写,下面是图片介绍,资源代码会有上传!供初学者学习指教(代码是Android studio) 1.控件 0 ...

  4. 直播电商软件开发,图片相册选择与拍照

    直播电商软件开发,图片相册选择与拍照实现的相关代码 /*** 照相或者选择图片* 引用ImageSelector框架,* 1.需要在Project的build.gradle在添加以下代码:* allp ...

  5. android+代码调用+相册+小米,Android调用系统相册选择图片,支持小米4云相册

    用小米4调用系统相册选择照片时,如果云相册功能开启的话.云相册中的图片也会显示在选择列表中.经过测试,选择到云相册中的图片的话,uri的scheme是file,而不再试content.本文支持云相册的 ...

  6. android 调用相册功能吗,Android调用系统相册选择图片,支持小米4云相册

    用小米4调用系统相册选择照片时,如果云相册功能开启的话.云相册中的图片也会显示在选择列表中.经过测试,选择到云相册中的图片的话,uri的scheme是file,而不再试content.本文支持云相册的 ...

  7. 学习笔记之Android调用系统相册选择图片

    文章目录 前言 使用步骤 小结 参考资料 前言 在相册里选择图片上传也是很常见的功能了例如微信朋友圈等等.但是他们是自定义的选择器,可以选择多张图片并修改.这里我们讲一个最简单的:调用系统的相册选择一 ...

  8. Android实现系统相册选择APP全局背景图片

    最近项目需要实现一个功能:用户在系统相册里选择并更换APP全部界面的背景图片. 基本思路: 1,用户点击"选择背景图片"按钮后,跳转到系统相册中选择图片.APP把选择的图片压缩后单 ...

  9. android 本地图片uri格式不一致,Android本地相册图片URI转换绝对路径

    最近做毕设的时候遇到了这个问题,一直给我报错java.io.notFound啥的啥的,不管怎么修改路径都是报这个错误,今天终于解决了,记录一下解决过程. 首先我们调用系统相册. Intent inte ...

最新文章

  1. django框架-DRF工程之认证功能
  2. hdu5015 矩阵快速幂233(好题)
  3. 第三次学JAVA再学不好就吃翔(part116)--同步代码块
  4. Spring4.0之四:Meta Annotation(元注解)
  5. Twitter 宣布抛弃 Mesos,全面转向Kubernetes
  6. TypeScript 变量声明
  7. 【Java】输入三角形的三边长,求三角形的面积
  8. 双11背后的黑科技:大数据实时计算如何为你量身定制?
  9. 人大金仓数据库使用uuid
  10. 深拷贝和浅拷贝的区别
  11. 115://开头的链接怎么转磁力?
  12. 内存自动清理.sql
  13. GUI界面开发,Swing工具的JFrame开发记事本页面
  14. 开源DirectShow分析器和解码器: LAV Filter
  15. 周界报警系统服务器,周界报警系统
  16. 2021年起重机司机(限桥式起重机)考试内容及起重机司机(限桥式起重机)复审模拟考试
  17. CameraX ImageAnalysis 输出帧大小设置
  18. 思必驰成立2亿基金,扶持DUI平台优秀开发者
  19. python例子下载_python例子下载
  20. 毕业生新手如何入门新媒体运营岗位

热门文章

  1. 美元对人民币汇率的大数据分析与预测
  2. 测试连接--ping (IP地址,网址,主机名)
  3. python中py是什么意思_python中__init__.py是干什么的
  4. 飞塔防火墙密码忘记重置方法
  5. 亚马逊多账号关联原因
  6. 计算机操作系统的pv是什么意思,计算机操作系统关于PV操作的一道题
  7. 产品设计需求分析研究
  8. 为防止用户自定义Bixby按键,三星先给T-Mobile用户的S8发送更新
  9. Java8新特性之Optional类(附代码案例)
  10. 自适应设计和响应式设计