vcard: improve picture quality
Change-Id: I5168237dd0b6b464a7f4897b3b92d1f4c6b3b102
diff --git a/ring-android/app/src/main/java/cx/ring/services/VCardServiceImpl.java b/ring-android/app/src/main/java/cx/ring/services/VCardServiceImpl.java
index c374624..12d2b9d 100644
--- a/ring-android/app/src/main/java/cx/ring/services/VCardServiceImpl.java
+++ b/ring-android/app/src/main/java/cx/ring/services/VCardServiceImpl.java
@@ -70,9 +70,9 @@
.filter( vcard -> !VCardUtils.isEmpty(vcard)).toSingle()
.map(vcard -> {
if (!vcard.getPhotos().isEmpty()) {
- // Reduce photo size to fit in one DHT packet
- Bitmap photo = BitmapUtils.bytesToBitmap(vcard.getPhotos().get(0).getData(), maxSize);
- //photo = BitmapUtils.reduceBitmap(photo, maxSize);
+ // Reduce photo to fit in maxSize, assuming JPEG compress with ratio of at least 8
+ byte[] data = vcard.getPhotos().get(0).getData();
+ Bitmap photo = BitmapUtils.bytesToBitmap(data, maxSize * 8);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.JPEG, 88, stream);
vcard.removeProperties(Photo.class);
diff --git a/ring-android/app/src/main/java/cx/ring/utils/BitmapUtils.java b/ring-android/app/src/main/java/cx/ring/utils/BitmapUtils.java
index b452c44..11b5eb6 100644
--- a/ring-android/app/src/main/java/cx/ring/utils/BitmapUtils.java
+++ b/ring-android/app/src/main/java/cx/ring/utils/BitmapUtils.java
@@ -38,7 +38,7 @@
*/
public final class BitmapUtils
{
- private static final String TAG = BitmapUtils.class.getName();
+ private static final String TAG = BitmapUtils.class.getSimpleName();
private BitmapUtils() {}
public static Photo bitmapToPhoto(@NonNull Bitmap image) {
diff --git a/ring-android/libringclient/src/main/java/cx/ring/services/VCardService.java b/ring-android/libringclient/src/main/java/cx/ring/services/VCardService.java
index f4ed7eb..b103f0c 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/services/VCardService.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/services/VCardService.java
@@ -30,7 +30,7 @@
public abstract class VCardService {
public static final int MAX_SIZE_SIP = 256 * 1024;
- public static final int MAX_SIZE_REQUEST = 64 * 1024;
+ public static final int MAX_SIZE_REQUEST = 16 * 1024;
public abstract Single<VCard> loadSmallVCard(String accountId, int maxSize);
public abstract Single<VCard> saveVCardProfile(String accountId, String uri, String displayName, String picture);