aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Gultsch <daniel@gultsch.de>2015-09-29 12:25:32 +0200
committerDaniel Gultsch <daniel@gultsch.de>2015-09-29 12:25:32 +0200
commit64dbb069abdb360a7b398c64daf022619b070693 (patch)
treecbf6ebe8ff232af717b31f4bcb565fadb7795f01
parent5fb77a9739912c9a418b91cb2acfe54c3c88825d (diff)
rotate thumbnails. fixes #1438
-rw-r--r--src/main/java/eu/siacs/conversations/persistance/FileBackend.java21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java
index 817f1c51..f5549f92 100644
--- a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java
+++ b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java
@@ -260,6 +260,10 @@ public class FileBackend {
}
}
+ private int getRotation(File file) {
+ return getRotation(Uri.parse("file://"+file.getAbsolutePath()));
+ }
+
private int getRotation(Uri image) {
InputStream is = null;
try {
@@ -274,8 +278,7 @@ public class FileBackend {
public Bitmap getThumbnail(Message message, int size, boolean cacheOnly)
throws FileNotFoundException {
- Bitmap thumbnail = mXmppConnectionService.getBitmapCache().get(
- message.getUuid());
+ Bitmap thumbnail = mXmppConnectionService.getBitmapCache().get(message.getUuid());
if ((thumbnail == null) && (!cacheOnly)) {
File file = getFile(message);
BitmapFactory.Options options = new BitmapFactory.Options();
@@ -285,8 +288,12 @@ public class FileBackend {
throw new FileNotFoundException();
}
thumbnail = resize(fullsize, size);
- this.mXmppConnectionService.getBitmapCache().put(message.getUuid(),
- thumbnail);
+ fullsize.recycle();
+ int rotation = getRotation(file);
+ if (rotation > 0) {
+ thumbnail = rotate(thumbnail, rotation);
+ }
+ this.mXmppConnectionService.getBitmapCache().put(message.getUuid(),thumbnail);
}
return thumbnail;
}
@@ -512,8 +519,10 @@ public class FileBackend {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(file.getAbsolutePath(), options);
- int imageHeight = options.outHeight;
- int imageWidth = options.outWidth;
+ int rotation = getRotation(file);
+ boolean rotated = rotation == 90 || rotation == 270;
+ int imageHeight = rotated ? options.outWidth : options.outHeight;
+ int imageWidth = rotated ? options.outHeight : options.outWidth;
if (url == null) {
message.setBody(Long.toString(file.getSize()) + '|' + imageWidth + '|' + imageHeight);
} else {