android - Base64 encodeBytes - 内存不足异常

标签 android

我正在尝试将图片从 android 上传到远程服务器。除了大照片外,一切正常。我在 Base64.encodeBytes() 方法中得到“内存异常”。这是代码。

ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream); //compress to which format you want.
byte [] byte_arr = stream.toByteArray();
String image_str = Base64.encodeBytes(byte_arr);

你们能帮我解决这个问题吗?我之前曾尝试通过对位图进行采样来解决这个问题,它确实有效,但它缩小了位图,我总是想以其原始大小上传图片。

谢谢。

最佳答案

我之前遇到过同样的大图像问题...我刚刚在将位图转换为 Base64 之前缩放了位图...您可以按如下方式使用它...

bitmap=Bitmap.createScaledBitmap(bitmap, 100, 100, true);

ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); //compress to which format you want.
byte [] byte_arr = stream.toByteArray();
String image_str = Base64.encodeBytes(byte_arr);

关于android - Base64 encodeBytes - 内存不足异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9390428/

相关文章:

android - Gradle 7.2 : How to apply a custom Gradle SETTINGS plugin?

android - 响应变量的变化

android - 在尝试使用 cordova-android-chromeview 之前,是否需要从源代码构建 chromeview 项目?

Android 亚行 Logcat : tag with colon

Android Facebook SDK 发布 key 哈希不起作用

android - Facebook SDK 4.6.0 FacebookCallback 从未被调用

android - 我想将 textview 中的数据添加到 sqlite 数据库

android - 如何在方形 watch 上绘制表盘 'ticks'?

Android:以编程方式获取设备名称

javascript - 从sql中提取十进制值