@@ -1537,7 +1537,12 @@ public class FileBackend {
return new Pair(getPepAvatar(bitmap, Bitmap.CompressFormat.PNG, 100), false);
}
} catch (Exception e) {
- return null;
+ try {
+ final SVG svg = SVG.getFromInputStream(mXmppConnectionService.getContentResolver().openInputStream(uri));
+ return new Pair(getPepAvatar(uri, (int) svg.getDocumentWidth(), (int) svg.getDocumentHeight(), "image/svg+xml"), true);
+ } catch (Exception e2) {
+ return null;
+ }
}
}
@@ -1758,7 +1763,7 @@ public class FileBackend {
decoder.setCrop(new Rect(left, top, left + newSize, top + newSize));
});
} catch (final IOException e) {
- return null;
+ return getSVGSquare(image, size);
}
} else {
Bitmap bitmap = cropCenterSquare(image, size);
@@ -2125,7 +2130,7 @@ public class FileBackend {
Canvas canvas = new Canvas(output);
svg.renderToCanvas(canvas, target);
- return new BitmapDrawable(output);
+ return new SVGDrawable(output);
} catch (final IOException | SVGParseException e) {
return null;
}
@@ -2146,7 +2151,7 @@ public class FileBackend {
Canvas canvas = new Canvas(output);
svg.renderToCanvas(canvas);
- return new BitmapDrawable(output);
+ return new SVGDrawable(output);
} catch (final IOException | SVGParseException e) {
return null;
}
@@ -2198,4 +2203,8 @@ public class FileBackend {
return resId;
}
}
+
+ public static class SVGDrawable extends BitmapDrawable {
+ public SVGDrawable(Bitmap bm) { super(bm); }
+ }
}
@@ -48,6 +48,7 @@ import eu.siacs.conversations.Config;
import eu.siacs.conversations.R;
import eu.siacs.conversations.databinding.ActivityPublishProfilePictureBinding;
import eu.siacs.conversations.entities.Conversation;
+import eu.siacs.conversations.persistance.FileBackend;
import eu.siacs.conversations.ui.interfaces.OnAvatarPublication;
import eu.siacs.conversations.ui.util.PendingItem;
@@ -145,7 +146,7 @@ public class PublishGroupChatProfilePictureActivity extends XmppActivity impleme
if (Build.VERSION.SDK_INT >= 28) {
this.uri = uri;
reloadAvatar();
- if (this.binding.accountImage.getDrawable() instanceof AnimatedImageDrawable) {
+ if (this.binding.accountImage.getDrawable() instanceof AnimatedImageDrawable || this.binding.accountImage.getDrawable() instanceof FileBackend.SVGDrawable) {
return;
}
}
@@ -29,6 +29,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
import eu.siacs.conversations.Config;
import eu.siacs.conversations.R;
import eu.siacs.conversations.entities.Account;
+import eu.siacs.conversations.persistance.FileBackend;
import eu.siacs.conversations.services.XmppConnectionService;
import eu.siacs.conversations.ui.interfaces.OnAvatarPublication;
import eu.siacs.conversations.utils.PhoneHelper;
@@ -241,7 +242,7 @@ public class PublishProfilePictureActivity extends XmppActivity implements XmppC
public void cropUri(final Uri uri) {
if (Build.VERSION.SDK_INT >= 28) {
loadImageIntoPreview(uri);
- if (this.avatar.getDrawable() instanceof AnimatedImageDrawable) {
+ if (this.avatar.getDrawable() instanceof AnimatedImageDrawable || this.avatar.getDrawable() instanceof FileBackend.SVGDrawable) {
this.avatarUri = uri;
return;
}