You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ra...@apache.org on 2018/07/25 05:16:47 UTC
[fineract-cn-mobile] branch development updated: feat: Image
compression before upload
This is an automated email from the ASF dual-hosted git repository.
rajanmaurya154 pushed a commit to branch development
in repository https://gitbox.apache.org/repos/asf/fineract-cn-mobile.git
The following commit(s) were added to refs/heads/development by this push:
new d3d3eb9 feat: Image compression before upload
d3d3eb9 is described below
commit d3d3eb9a8c3b648054289672bd7b5c24e03e490b
Author: Mohak <mo...@gmail.com>
AuthorDate: Tue Jun 19 18:33:01 2018 +0530
feat: Image compression before upload
---
app/build.gradle | 3 ++
.../UploadIdentificationCardBottomSheet.java | 52 ++++++++++++----------
.../UploadIdentificationCardContract.java | 4 --
app/src/main/res/xml/filepaths.xml | 2 +-
4 files changed, 32 insertions(+), 29 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index bc98fd0..fc40ba3 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -129,6 +129,9 @@ dependencies {
//Sticky header RecyclerView
implementation 'org.zakariya.stickyheaders:stickyheaders:0.7.6'
+ // Compressor for Image Compression
+ implementation 'id.zelory:compressor:2.1.0'
+
//Material Stepper UI library
implementation 'com.stepstone.stepper:material-stepper:3.3.0'
diff --git a/app/src/main/java/org/apache/fineract/ui/online/identification/uploadidentificationscan/UploadIdentificationCardBottomSheet.java b/app/src/main/java/org/apache/fineract/ui/online/identification/uploadidentificationscan/UploadIdentificationCardBottomSheet.java
index 86180fa..2779125 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/identification/uploadidentificationscan/UploadIdentificationCardBottomSheet.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/identification/uploadidentificationscan/UploadIdentificationCardBottomSheet.java
@@ -8,7 +8,7 @@ import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
-import android.graphics.Bitmap;
+import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.MediaStore;
@@ -16,6 +16,7 @@ import android.support.annotation.NonNull;
import android.support.design.widget.BottomSheetBehavior;
import android.support.design.widget.BottomSheetDialog;
import android.support.design.widget.TextInputLayout;
+import android.support.v4.content.FileProvider;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
@@ -32,7 +33,6 @@ import org.apache.fineract.utils.ValidateIdentifierUtil;
import org.apache.fineract.utils.ValidationUtil;
import java.io.File;
-import java.io.FileOutputStream;
import java.io.IOException;
import javax.inject.Inject;
@@ -40,10 +40,11 @@ import javax.inject.Inject;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
+import id.zelory.compressor.Compressor;
/**
* @author Rajan Maurya
- * On 01/08/17.
+ * On 01/08/17.
*/
public class UploadIdentificationCardBottomSheet extends FineractBaseBottomSheetDialogFragment
implements UploadIdentificationCardContract.View, TextWatcher {
@@ -73,10 +74,12 @@ public class UploadIdentificationCardBottomSheet extends FineractBaseBottomSheet
@Inject
UploadIdentificationCardPresenter uploadIdentificationCardPresenter;
+ private Compressor imageCompressor;
+
View rootView;
private BottomSheetBehavior behavior;
- private File cachePath;
+ private File cameraImage, compressedImage;
private String customerIdentifier;
private String identificationNumber;
@@ -92,6 +95,7 @@ public class UploadIdentificationCardBottomSheet extends FineractBaseBottomSheet
behavior = BottomSheetBehavior.from((View) rootView.getParent());
((FineractBaseActivity) getActivity()).getActivityComponent().inject(this);
uploadIdentificationCardPresenter.attachView(this);
+ imageCompressor = new Compressor(getActivity());
ButterKnife.bind(this, rootView);
showUserInterface();
@@ -112,7 +116,7 @@ public class UploadIdentificationCardBottomSheet extends FineractBaseBottomSheet
uploadIdentificationCardPresenter.uploadIdentificationCardScan(customerIdentifier,
identificationNumber, etIdentifier.getText().toString().trim(),
- etDescription.getText().toString().trim(), cachePath);
+ etDescription.getText().toString().trim(), compressedImage);
}
}
@@ -138,8 +142,22 @@ public class UploadIdentificationCardBottomSheet extends FineractBaseBottomSheet
@Override
public void openCamera() {
+
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
+
if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
+
+ cameraImage = new File(getActivity().getExternalCacheDir() +
+ File.separator + "scan.png");
+
+ if (cameraImage.exists()) {
+ cameraImage.delete();
+ }
+
+ Uri photoURI = FileProvider.getUriForFile(getActivity(),
+ "org.apache.fineract.fileprovider", cameraImage);
+
+ takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
@@ -147,10 +165,12 @@ public class UploadIdentificationCardBottomSheet extends FineractBaseBottomSheet
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
- Bundle extras = data.getExtras();
- Bitmap imageBitmap = (Bitmap) extras.get("data");
etSelectFile.setText(getString(R.string.scan_file));
- saveImageInCache(imageBitmap);
+ try {
+ compressedImage = imageCompressor.compressToFile(cameraImage);
+ } catch (IOException e) {
+ Log.d(UploadIdentificationCardBottomSheet.class.getSimpleName(), e.toString());
+ }
}
}
@@ -168,22 +188,6 @@ public class UploadIdentificationCardBottomSheet extends FineractBaseBottomSheet
}
@Override
- public void saveImageInCache(Bitmap bitmap) {
- try {
- File outputDir = getActivity().getCacheDir();
- File outputFile = File.createTempFile("scan", "png", outputDir);
- cachePath = outputFile;
-
- // overwrites this image every time
- FileOutputStream stream = new FileOutputStream(outputFile);
- bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
- stream.close();
- } catch (IOException e) {
- Log.d(LOG_TAG, e.getLocalizedMessage());
- }
- }
-
- @Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
switch (requestCode) {
diff --git a/app/src/main/java/org/apache/fineract/ui/online/identification/uploadidentificationscan/UploadIdentificationCardContract.java b/app/src/main/java/org/apache/fineract/ui/online/identification/uploadidentificationscan/UploadIdentificationCardContract.java
index 03e0c3a..823fc58 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/identification/uploadidentificationscan/UploadIdentificationCardContract.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/identification/uploadidentificationscan/UploadIdentificationCardContract.java
@@ -1,7 +1,5 @@
package org.apache.fineract.ui.online.identification.uploadidentificationscan;
-import android.graphics.Bitmap;
-
import org.apache.fineract.ui.base.MvpView;
import java.io.File;
@@ -22,8 +20,6 @@ public interface UploadIdentificationCardContract {
void requestPermission();
- void saveImageInCache(Bitmap bitmap);
-
void showScanUploadedSuccessfully();
void showProgressDialog();
diff --git a/app/src/main/res/xml/filepaths.xml b/app/src/main/res/xml/filepaths.xml
index a0bcef4..9388ff0 100644
--- a/app/src/main/res/xml/filepaths.xml
+++ b/app/src/main/res/xml/filepaths.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
- <cache-path name="shared_images" path="images/"/>
+ <external-cache-path name="cache" path="/" />
</paths>