compile 'top.zibin:Luban:1.0.9'//图片压缩 compile 'org.xutils:xutils:3.3.34'//网络请求 compile 'io.reactivex:rxandroid:1.1.0'//rxandroid compile 'io.reactivex:rxjava:1.1.0'//rxjava
jackOptions {
enabled true
}
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
}
public class APP extends Application {
private static APP instance;
public static synchronized APP getInstance() {
return instance;
}
@Override
public void onCreate() {
super.onCreate();
x.Ext.init(this);
x.Ext.setDebug(org.xutils.BuildConfig.DEBUG);
instance = this;
}
}
private List<String> mImageList;
private List<String> mReduceImageList;
private List<String> mImageUrl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mImageUrl = new ArrayList<>();
mImageList = new ArrayList<>();
mReduceImageList = new ArrayList<>();
mImageList.add("content://media/external/images/media/573778");
mImageList.add("content://media/external/images/media/573778");
mImageList.add("content://media/external/images/media/573778");
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(v -> setImage());
}
/**
* 根据uri查询位置图片
*
* @param selectedImage
*/
private void sendPicByUri(Uri selectedImage) {
Cursor cursor = getContentResolver().query(selectedImage, null, null,
null, null);
String st8 = "没有找到图片";
if (cursor != null) {
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex("_data");
String picturePath = cursor.getString(columnIndex);
cursor.close();
if (picturePath == null || picturePath.equals("null")) {
Toast toast = Toast.makeText(this, st8, Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
return;
}
sendPicture(picturePath);
} else {
File file = new File(selectedImage.getPath());
if (!file.exists()) {
Toast toast = Toast.makeText(this, st8, Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
return;
}
sendPicture(file.getAbsolutePath());
}
}
/**
* 压缩图片
*
* @param filePath
*/
private void sendPicture(final String filePath) {
Log.i(tag, "压缩图片");
Luban
.get(this)
.load(new File(filePath))
.putGear(Luban.THIRD_GEAR)
.setCompressListener(new OnCompressListener() {
@Override
public void onStart() {
}
@Override
public void onSuccess(File file) {
Log.i(tag, "压缩后的图片==》");
uploadImg(file);
}
@Override
public void onError(Throwable e) {
}
})
.launch();
setResult(RESULT_OK);
}
/**
* 分发url 接收者
*/
private Func1<List<String>, Observable<String>> mOneLetterFunc = Observable::from;
private Action1<String> mImageUrlAction = s -> uploadImg(new File(s));
private Action1<String> mAddContent = s -> sendPicByUri(Uri.parse(s));
/**
* 分发压缩图片
*/
private void setImage() {
Log.i(tag, "开始分发获取的url");
Observable.just(mImageList)
.subscribeOn(Schedulers.io()) // 指定 subscribe() 发生在 IO 线程
.observeOn(AndroidSchedulers.mainThread())
.flatMap(mOneLetterFunc)
.subscribe(mAddContent);
}
/**
* 图片上传服务器
*
* @param file 文件
*/
public void uploadImg(File file) {
Log.i(tag, "网络请求上传图片");
RequestParams params = new RequestParams("这里是上传到服务器的Http地址");
params.addBodyParameter("imgContent", file);
params.setMultipart(true);
x.http().post(params, new Callback.ProgressCallback<String>() {
@Override
public void onWaiting() {
}
@Override
public void onStarted() {
}
@Override
public void onLoading(long total, long current, boolean isDownloading) {
}
@Override
public void onSuccess(String result) {
try {
JSONObject jsonObject = new JSONObject(result);
JSONObject data = jsonObject.getJSONObject("data");
mImageUrl.add(data.getString("src"));
if (mImageList.size() == mImageUrl.size()) {
Log.i("上传完成==", mImageUrl.toString());
}
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
Log.i("上传出错==", ex.getMessage());
}
@Override
public void onCancelled(CancelledException cex) {
}
@Override
public void onFinished() {
}
});
}
/**
* 直接上传所选图片图片
*/
private void uploadingImage() {
Log.i(tag, "开始上传图片");
if (mReduceImageList.size() > 0) {
Observable.just(mReduceImageList)
.subscribeOn(Schedulers.io()) // 指定 subscribe() 发生在 IO 线程
.observeOn(AndroidSchedulers.mainThread())
.flatMap(mOneLetterFunc)
.subscribe(mImageUrlAction);
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有