diff --git a/CHANGELOG.md b/CHANGELOG.md index 4bb701ef8..526027ebb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Delta Chat Android Changelog +## Unreleased + +* improve image quality when setting group avatars + ## v2.10.0 2025-08 diff --git a/src/main/java/org/thoughtcrime/securesms/CreateProfileActivity.java b/src/main/java/org/thoughtcrime/securesms/CreateProfileActivity.java index 18c6b7e83..5f5fbca4d 100644 --- a/src/main/java/org/thoughtcrime/securesms/CreateProfileActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/CreateProfileActivity.java @@ -35,7 +35,6 @@ import org.thoughtcrime.securesms.mms.AttachmentManager; import org.thoughtcrime.securesms.mms.GlideApp; import org.thoughtcrime.securesms.permissions.Permissions; import org.thoughtcrime.securesms.profiles.AvatarHelper; -import org.thoughtcrime.securesms.profiles.ProfileMediaConstraints; import org.thoughtcrime.securesms.scribbles.ScribbleActivity; import org.thoughtcrime.securesms.util.Prefs; import org.thoughtcrime.securesms.util.ViewUtil; @@ -144,14 +143,13 @@ public class CreateProfileActivity extends BaseActionBarActivity { } private void setAvatarView(Uri output) { - final ProfileMediaConstraints constraints = new ProfileMediaConstraints(); GlideApp.with(this) .asBitmap() .load(output) .skipMemoryCache(true) .diskCacheStrategy(DiskCacheStrategy.NONE) .centerCrop() - .override(constraints.getImageMaxWidth(this), constraints.getImageMaxHeight(this)) + .override(AvatarHelper.AVATAR_SIZE, AvatarHelper.AVATAR_SIZE) .into(new SimpleTarget() { @Override public void onResourceReady(@NonNull Bitmap resource, Transition transition) { diff --git a/src/main/java/org/thoughtcrime/securesms/GroupCreateActivity.java b/src/main/java/org/thoughtcrime/securesms/GroupCreateActivity.java index b0a8ff03c..58d041ca8 100644 --- a/src/main/java/org/thoughtcrime/securesms/GroupCreateActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/GroupCreateActivity.java @@ -54,7 +54,6 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity public static final String CLONE_CHAT_EXTRA = "clone_chat"; private static final int PICK_CONTACT = 1; - public static final int AVATAR_SIZE = 210; private static final int REQUEST_CODE_AVATAR = 2759; private DcContext dcContext; @@ -376,7 +375,7 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity .skipMemoryCache(true) .diskCacheStrategy(DiskCacheStrategy.NONE) .centerCrop() - .override(AVATAR_SIZE, AVATAR_SIZE) + .override(AvatarHelper.AVATAR_SIZE, AvatarHelper.AVATAR_SIZE) .into(new CustomTarget() { @Override public void onResourceReady(@NonNull Bitmap resource, Transition transition) { diff --git a/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java index bc264b516..bdc6b96fc 100644 --- a/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java @@ -49,7 +49,6 @@ import org.thoughtcrime.securesms.mms.AttachmentManager; import org.thoughtcrime.securesms.mms.GlideApp; import org.thoughtcrime.securesms.permissions.Permissions; import org.thoughtcrime.securesms.profiles.AvatarHelper; -import org.thoughtcrime.securesms.profiles.ProfileMediaConstraints; import org.thoughtcrime.securesms.proxy.ProxySettingsActivity; import org.thoughtcrime.securesms.qr.RegistrationQrActivity; import org.thoughtcrime.securesms.scribbles.ScribbleActivity; @@ -284,14 +283,13 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements } private void setAvatarView(Uri output) { - final ProfileMediaConstraints constraints = new ProfileMediaConstraints(); GlideApp.with(this) .asBitmap() .load(output) .skipMemoryCache(true) .diskCacheStrategy(DiskCacheStrategy.NONE) .centerCrop() - .override(constraints.getImageMaxWidth(this), constraints.getImageMaxHeight(this)) + .override(AvatarHelper.AVATAR_SIZE, AvatarHelper.AVATAR_SIZE) .into(new CustomTarget() { @Override public void onResourceReady(@NonNull Bitmap resource, Transition transition) { diff --git a/src/main/java/org/thoughtcrime/securesms/profiles/AvatarHelper.java b/src/main/java/org/thoughtcrime/securesms/profiles/AvatarHelper.java index 2ebe7afa7..bf98af3d4 100644 --- a/src/main/java/org/thoughtcrime/securesms/profiles/AvatarHelper.java +++ b/src/main/java/org/thoughtcrime/securesms/profiles/AvatarHelper.java @@ -20,6 +20,8 @@ import java.io.FileOutputStream; import java.io.IOException; public class AvatarHelper { + /* the maximum width/height an avatar should have */ + public static final int AVATAR_SIZE = 640; public static void setGroupAvatar(Context context, int chatId, Bitmap bitmap) { DcContext dcContext = DcHelper.getContext(context); @@ -30,7 +32,7 @@ public class AvatarHelper { try { File avatar = File.createTempFile("groupavatar", ".jpg", context.getCacheDir()); FileOutputStream out = new FileOutputStream(avatar); - bitmap.compress(Bitmap.CompressFormat.JPEG, 85, out); + bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out); out.close(); dcContext.setChatProfileImage(chatId, avatar.getPath()); // The avatar is copied to the blobs directory here... //noinspection ResultOfMethodCallIgnored diff --git a/src/main/java/org/thoughtcrime/securesms/profiles/ProfileMediaConstraints.java b/src/main/java/org/thoughtcrime/securesms/profiles/ProfileMediaConstraints.java deleted file mode 100644 index 72da12bcf..000000000 --- a/src/main/java/org/thoughtcrime/securesms/profiles/ProfileMediaConstraints.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.thoughtcrime.securesms.profiles; - - -import android.content.Context; - -import org.thoughtcrime.securesms.mms.MediaConstraints; - -public class ProfileMediaConstraints extends MediaConstraints { - @Override - public int getImageMaxWidth(Context context) { - return 640; - } - - @Override - public int getImageMaxHeight(Context context) { - return 640; - } - - @Override - public int getImageMaxSize(Context context) { - return 5 * 1024 * 1024; - } -}