diff options
author | Daniel Lublin <daniel@lublin.se> | 2022-03-11 09:41:03 +0300 |
---|---|---|
committer | Daniel Lublin <daniel@lublin.se> | 2022-03-11 09:41:21 +0300 |
commit | 1b5490f028956f5543151edc6575de3606ff55e6 (patch) | |
tree | cc840e788685c019c1c918aaa2b81ab4b9d55a47 | |
parent | 89588f7388ad75e8cf78d94a6d3bd1cd6dc5cb11 (diff) |
Decode bitmap directly from stream
-rw-r--r-- | app/src/main/java/se/lublin/mumla/channel/ChannelChatFragment.java | 14 | ||||
-rw-r--r-- | app/src/main/java/se/lublin/mumla/util/InputStreamUtils.java | 21 |
2 files changed, 6 insertions, 29 deletions
diff --git a/app/src/main/java/se/lublin/mumla/channel/ChannelChatFragment.java b/app/src/main/java/se/lublin/mumla/channel/ChannelChatFragment.java index 486d090..4909e7d 100644 --- a/app/src/main/java/se/lublin/mumla/channel/ChannelChatFragment.java +++ b/app/src/main/java/se/lublin/mumla/channel/ChannelChatFragment.java @@ -50,7 +50,7 @@ import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; import java.io.ByteArrayOutputStream; -import java.io.IOException; +import java.io.FileNotFoundException; import java.io.InputStream; import java.net.URLEncoder; import java.text.DateFormat; @@ -74,7 +74,6 @@ import se.lublin.mumla.R; import se.lublin.mumla.service.IChatMessage; import se.lublin.mumla.util.BitmapUtils; import se.lublin.mumla.util.HumlaServiceFragment; -import se.lublin.mumla.util.InputStreamUtils; import se.lublin.mumla.util.MumbleImageGetter; public class ChannelChatFragment extends HumlaServiceFragment implements ChatTargetProvider.OnChatTargetSelectedListener { @@ -261,20 +260,19 @@ public class ChannelChatFragment extends HumlaServiceFragment implements ChatTar } int maxSize = getService().HumlaSession().getServerSettings().getImageMessageLength(); - byte[] bytes; + InputStream imageStream; try { - InputStream imageStream = requireContext().getContentResolver().openInputStream(uri); + imageStream = requireContext().getContentResolver().openInputStream(uri); if (imageStream == null) { + Log.w(TAG, "openInputStream(uri) failed"); return; } - bytes = InputStreamUtils.getBytes(imageStream); - imageStream.close(); - } catch (IOException e) { + } catch (FileNotFoundException e) { Log.d(TAG, "exception in onImagePicked: " + e); return; } - Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); + Bitmap bitmap = BitmapFactory.decodeStream(imageStream); if (bitmap == null) { Log.w(TAG, "decode to bitmap failed"); return; diff --git a/app/src/main/java/se/lublin/mumla/util/InputStreamUtils.java b/app/src/main/java/se/lublin/mumla/util/InputStreamUtils.java deleted file mode 100644 index 84ee9b2..0000000 --- a/app/src/main/java/se/lublin/mumla/util/InputStreamUtils.java +++ /dev/null @@ -1,21 +0,0 @@ -package se.lublin.mumla.util; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; - -public class InputStreamUtils { - public static byte[] getBytes(InputStream stream) throws IOException { - ByteArrayOutputStream outBuf = new ByteArrayOutputStream(); - try { - byte[] buf = new byte[1024]; - int len; - while ((len = stream.read(buf)) != -1) { - outBuf.write(buf, 0, len); - } - } finally { - outBuf.close(); - } - return outBuf.toByteArray(); - } -} |