Skip to content

Commit 7141cc8

Browse files
Merge pull request #6 from AdarshRevankar/memoryOptimize
mem opt: Major UI Change ; Performance Improvements ( MemBoost - Togg…
2 parents 2931dba + 9935df5 commit 7141cc8

32 files changed

+463
-242
lines changed

app/build.gradle

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,12 @@ dependencies {
2525
implementation fileTree(dir: 'libs', include: ['*.jar'])
2626
implementation 'androidx.appcompat:appcompat:1.1.0'
2727
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
28-
implementation 'com.android.support:appcompat-v7:29.+'
28+
implementation 'com.android.support:design:29.0.0'
29+
implementation 'com.android.support:appcompat-v7:29.0.0'
2930
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
31+
3032
testImplementation 'junit:junit:4.13'
33+
3134
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
3235
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
3336
}

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
<activity android:name=".MainActivity">
2222
<intent-filter>
2323
<action android:name="android.intent.action.MAIN" />
24+
2425
<category android:name="android.intent.category.LAUNCHER" />
2526
</intent-filter>
2627
</activity>

app/src/main/java/com/adrino/renderscript/Collapse.java

Lines changed: 42 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,19 @@
55
import android.os.Bundle;
66
import android.os.Environment;
77
import android.util.Log;
8+
import android.view.View;
89
import android.widget.ImageView;
910

1011
import androidx.appcompat.app.AppCompatActivity;
1112

1213
import java.io.File;
1314
import java.io.FileNotFoundException;
1415
import java.io.FileOutputStream;
16+
import java.sql.Time;
1517
import java.util.ArrayList;
1618
import java.util.List;
1719

20+
import static com.adrino.renderscript.MainActivity.SCALE_THRUSHOLD;
1821
import static com.adrino.renderscript.MainActivity.SOURCE1;
1922
import static com.adrino.renderscript.MainActivity.SOURCE2;
2023
import static com.adrino.renderscript.MainActivity.SOURCE3;
@@ -24,6 +27,7 @@ public class Collapse extends AppCompatActivity {
2427
List<Bitmap> bmpImages;
2528
private static final String TAG = "Collapse";
2629
private List<Bitmap> hdrOutput;
30+
private boolean set = false;
2731

2832
@Override
2933
protected void onCreate(final Bundle savedInstanceState) {
@@ -46,26 +50,58 @@ public void run() {
4650
}
4751
});
4852

53+
long start = System.currentTimeMillis();
4954
hdrOutput = exposureFusion.perform(bmpImages, ExposureFusion.Actions.COLLAPSE);
55+
long end = System.currentTimeMillis();
56+
57+
Log.e(TAG, "run: Total time : "+(float)(end - start)/1000+" s");
5058
runOnUiThread(new Runnable() {
5159
@Override
5260
public void run() {
53-
((ImageView)findViewById(R.id.original)).setImageBitmap(bmpImages.get(0));
61+
((ImageView)findViewById(R.id.original)).setImageBitmap(bmpImages.get(2));
5462
((ImageView) findViewById(R.id.hdr)).setImageBitmap(hdrOutput.get(0));
5563
}
5664
});
5765
}
5866
}).start();
67+
68+
(findViewById(R.id.hdr)).setOnLongClickListener(new View.OnLongClickListener() {
69+
@Override
70+
public boolean onLongClick(View v) {
71+
72+
ImageView imgView = findViewById(R.id.expanded_image);
73+
if(!set){
74+
if(hdrOutput!=null) {
75+
imgView.setVisibility(View.VISIBLE);
76+
imgView.setImageBitmap(hdrOutput.get(0));
77+
set = true;
78+
}
79+
}
80+
else{
81+
imgView.setVisibility(View.INVISIBLE);
82+
set = false;
83+
}
84+
85+
return true;
86+
}
87+
});
5988
}
6089

6190
List<Bitmap> generateResultant() {
6291
if (bmpImages == null) {
6392
bmpImages = new ArrayList<>();
64-
BitmapFactory.Options imgLoadOption = new BitmapFactory.Options();
65-
imgLoadOption.inSampleSize = ExposureFusion.SAMPLE_SIZE;
66-
bmpImages.add(BitmapFactory.decodeResource(getResources(), SOURCE1, imgLoadOption));
67-
bmpImages.add(BitmapFactory.decodeResource(getResources(), SOURCE2, imgLoadOption));
68-
bmpImages.add(BitmapFactory.decodeResource(getResources(), SOURCE3, imgLoadOption));
93+
94+
bmpImages.add(BitmapFactory.decodeResource(getResources(), SOURCE1));
95+
bmpImages.add(BitmapFactory.decodeResource(getResources(), SOURCE2));
96+
bmpImages.add(BitmapFactory.decodeResource(getResources(), SOURCE3));
97+
98+
int imgWidth = bmpImages.get(0).getWidth();
99+
int imgHeight = bmpImages.get(0).getHeight();
100+
int scaledWidth = imgHeight > imgWidth ? (imgWidth * SCALE_THRUSHOLD) / imgHeight : SCALE_THRUSHOLD;
101+
int scaledHeight = imgHeight > imgWidth ? SCALE_THRUSHOLD : (imgHeight * SCALE_THRUSHOLD) / imgWidth ;
102+
for (int i = 0; i < bmpImages.size(); i++) {
103+
bmpImages.set(i, Bitmap.createScaledBitmap(bmpImages.get(i), scaledWidth, scaledHeight, false));
104+
}
69105
return exposureFusion.perform(bmpImages, ExposureFusion.Actions.RESULTANT);
70106
}
71107
return null;

app/src/main/java/com/adrino/renderscript/ExposureFusion.java

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,16 @@
22

33
import android.content.Context;
44
import android.graphics.Bitmap;
5+
import android.util.Log;
56

67
import androidx.renderscript.Allocation;
78

89
import java.util.List;
910

1011
public class ExposureFusion implements HDRManager.Presenter {
1112

12-
public static final int SAMPLE_SIZE = 5;
13+
public static boolean MEM_BOOST;
14+
public static final int SAMPLE_SIZE = 1;
1315
private static final String TAG = "ExposureFusion";
1416
private static int SELECTED_INDEX = 0;
1517
private static HDRFilter hdrFilter;
@@ -38,6 +40,7 @@ public void setMeta(int imgWidth, int imgHeight, Bitmap.Config imgConfig) {
3840
@Override
3941
public List<Bitmap> perform(List<Bitmap> bmpImagesList, Actions action) {
4042

43+
Log.e(TAG, "perform: contrast : "+contrast);
4144
if (contrast == null) contrast = hdrFilter.applyConvolution3x3Filter(bmpImagesList);
4245
if (saturation == null) saturation = hdrFilter.applySaturationFilter(bmpImagesList);
4346
if (well_exposedness == null)
@@ -94,20 +97,4 @@ public List<Bitmap> perform(List<Bitmap> bmpImagesList, Actions action, int sele
9497
// SELECTED_INDEX = selected;
9598
// return hdrFilter.convertAllocationBMPDyamic(hdrFilter.generateLaplacianPyramids(inImage).get(SELECTED_INDEX));
9699
// }
97-
98-
@Override
99-
public Bitmap computeHDR(List<Bitmap> bmpInImages) {
100-
return hdrFilter.convertAllocationBMPDyamic(hdrFilter.collapseResultant(
101-
hdrFilter.generateResultant(
102-
hdrFilter.generateGaussianPyramid(
103-
hdrFilter.computeNormalWeighted(
104-
hdrFilter.applyConvolution3x3Filter(bmpInImages),
105-
hdrFilter.applySaturationFilter(bmpInImages),
106-
hdrFilter.applyExposureFilter(bmpInImages)
107-
), HDRFilter.DATA_TYPE.FLOAT32
108-
),
109-
hdrFilter.generateLaplacianPyramids(bmpInImages)
110-
)
111-
)).get(0);
112-
}
113100
}

0 commit comments

Comments
 (0)