do not compress/resize images with strange aspect ratios. fixes #3188

This commit is contained in:
Daniel Gultsch 2018-09-22 16:51:00 +02:00
parent b759cf902d
commit 70845c5e95
2 changed files with 14 additions and 1 deletions

View file

@ -687,6 +687,18 @@ public class FileBackend {
updateFileParams(message); updateFileParams(message);
} }
public boolean unusualBounds(Uri image) {
try {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeStream(mXmppConnectionService.getContentResolver().openInputStream(image), null, options);
float ratio = (float) options.outHeight / options.outWidth;
return ratio > (21.0f / 9.0f) || ratio < (9.0f / 21.0f);
} catch (Exception e) {
return false;
}
}
private int getRotation(File file) { private int getRotation(File file) {
return getRotation(Uri.parse("file://" + file.getAbsolutePath())); return getRotation(Uri.parse("file://" + file.getAbsolutePath()));
} }

View file

@ -504,7 +504,8 @@ public class XmppConnectionService extends Service {
if ("never".equals(compressPictures) if ("never".equals(compressPictures)
|| ("auto".equals(compressPictures) && getFileBackend().useImageAsIs(uri)) || ("auto".equals(compressPictures) && getFileBackend().useImageAsIs(uri))
|| (mimeType != null && mimeType.endsWith("/gif"))) { || (mimeType != null && mimeType.endsWith("/gif"))
|| getFileBackend().unusualBounds(uri)) {
Log.d(Config.LOGTAG, conversation.getAccount().getJid().asBareJid() + ": not compressing picture. sending as file"); Log.d(Config.LOGTAG, conversation.getAccount().getJid().asBareJid() + ": not compressing picture. sending as file");
attachFileToConversation(conversation, uri, mimeType, callback); attachFileToConversation(conversation, uri, mimeType, callback);
return; return;