|
@@ -17,11 +17,18 @@ import com.bumptech.glide.Glide;
|
|
|
import java.io.File;
|
|
|
import java.util.ArrayList;
|
|
|
|
|
|
+import io.reactivex.Flowable;
|
|
|
+import io.reactivex.android.schedulers.AndroidSchedulers;
|
|
|
+import io.reactivex.annotations.NonNull;
|
|
|
+import io.reactivex.functions.Consumer;
|
|
|
+import io.reactivex.functions.Function;
|
|
|
+import io.reactivex.schedulers.Schedulers;
|
|
|
import me.iwf.photopicker.PhotoPicker;
|
|
|
import top.zibin.luban.Luban;
|
|
|
import top.zibin.luban.OnCompressListener;
|
|
|
|
|
|
public class MainActivity extends AppCompatActivity {
|
|
|
+ private static final String TAG = "Luban";
|
|
|
|
|
|
private TextView fileSize;
|
|
|
private TextView imageSize;
|
|
@@ -56,11 +63,51 @@ public class MainActivity extends AppCompatActivity {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
|
+ super.onActivityResult(requestCode, resultCode, data);
|
|
|
+
|
|
|
+ if (resultCode == RESULT_OK && requestCode == PhotoPicker.REQUEST_CODE) {
|
|
|
+ if (data != null) {
|
|
|
+ ArrayList<String> photos = data.getStringArrayListExtra(PhotoPicker.KEY_SELECTED_PHOTOS);
|
|
|
+
|
|
|
+ File imgFile = new File(photos.get(0));
|
|
|
+ fileSize.setText(imgFile.length() / 1024 + "k");
|
|
|
+ imageSize.setText(computeSize(imgFile)[0] + "*" + computeSize(imgFile)[1]);
|
|
|
+
|
|
|
+ for (String photo : photos) {
|
|
|
+ compressWithRx(new File(photo));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void compressWithRx(File file) {
|
|
|
+ Flowable.just(file)
|
|
|
+ .observeOn(Schedulers.io())
|
|
|
+ .map(new Function<File, File>() {
|
|
|
+ @Override public File apply(@NonNull File file) throws Exception {
|
|
|
+ return Luban.with(MainActivity.this).load(file).get();
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .observeOn(AndroidSchedulers.mainThread())
|
|
|
+ .subscribe(new Consumer<File>() {
|
|
|
+ @Override public void accept(@NonNull File file) throws Exception {
|
|
|
+ Log.d(TAG, file.getAbsolutePath());
|
|
|
+
|
|
|
+ Glide.with(MainActivity.this).load(file).into(image);
|
|
|
+
|
|
|
+ thumbFileSize.setText(file.length() / 1024 + "k");
|
|
|
+ thumbImageSize.setText(computeSize(file)[0] + "*" + computeSize(file)[1]);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 压缩单张图片 Listener 方式
|
|
|
*/
|
|
|
private void compressWithLs(File file) {
|
|
|
- Luban.get(this)
|
|
|
+ Luban.with(this)
|
|
|
.load(file)
|
|
|
.setCompressListener(new OnCompressListener() {
|
|
|
@Override
|
|
@@ -98,22 +145,4 @@ public class MainActivity extends AppCompatActivity {
|
|
|
|
|
|
return size;
|
|
|
}
|
|
|
-
|
|
|
- @Override
|
|
|
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
|
- super.onActivityResult(requestCode, resultCode, data);
|
|
|
-
|
|
|
- if (resultCode == RESULT_OK && requestCode == PhotoPicker.REQUEST_CODE) {
|
|
|
- if (data != null) {
|
|
|
- ArrayList<String> photos = data.getStringArrayListExtra(PhotoPicker.KEY_SELECTED_PHOTOS);
|
|
|
-
|
|
|
- File imgFile = new File(photos.get(0));
|
|
|
- fileSize.setText(imgFile.length() / 1024 + "k");
|
|
|
- imageSize.setText(computeSize(imgFile)[0] + "*" + computeSize(imgFile)[1]);
|
|
|
-
|
|
|
- for (int i = 0; i < photos.size(); i++)
|
|
|
- compressWithLs(new File(photos.get(i)));
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
}
|