diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/MediaActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/MediaActivity.java index 02ae29cec..9c539f9bc 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/MediaActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/MediaActivity.java @@ -373,7 +373,8 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface { new SimpleTarget() { @Override public void onResourceReady(@NonNull final Bitmap resource, Transition transition) { - imageView.setImageBitmap(resource); + Bitmap imageCompressed = Helper.compressImageIfNeeded(MediaActivity.this, resource); + imageView.setImageBitmap(imageCompressed); Glide.with(getApplicationContext()) .asBitmap() .load(finalUrl).into( @@ -381,9 +382,10 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface { @Override public void onResourceReady(@NonNull final Bitmap resource, Transition transition) { loader.setVisibility(View.GONE); + Bitmap imageCompressed = Helper.compressImageIfNeeded(MediaActivity.this, resource); if( imageView.getScale() < 1.1) { downloadedImage = resource; - imageView.setImageBitmap(resource); + imageView.setImageBitmap(imageCompressed); }else{ message_ready.setVisibility(View.VISIBLE); } @@ -391,7 +393,7 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface { @Override public void onClick(View view) { downloadedImage = resource; - imageView.setImageBitmap(resource); + imageView.setImageBitmap(imageCompressed); message_ready.setVisibility(View.GONE); } }); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java index 01dcfd80f..5dda8822d 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java @@ -2277,6 +2277,22 @@ public class Helper { } } + public static Bitmap compressImageIfNeeded(Context context, Bitmap bmToCompress){ + + int size = bmToCompress.getByteCount(); + double resizeby = 33554432; //4Mo + double resize = ((double)size)/resizeby; + if( resize > 1 ) { + Bitmap newBitmap = Bitmap.createScaledBitmap(bmToCompress, (int) (bmToCompress.getWidth() / resize), + (int) (bmToCompress.getHeight() / resize), true); + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + newBitmap.compress(Bitmap.CompressFormat.JPEG, 80, bos); + return newBitmap; + } + return bmToCompress; + } + + @SuppressWarnings({"WeakerAccess", "unused"}) public static void largeLog(String content) { if (content.length() > 4000) {