Android中将图片转换为Base64时候OutOfMemoryError

y429786006 2012-04-28 04:30:16
04-28 16:27:39.799: E/AndroidRuntime(7405): FATAL EXCEPTION: Thread-10
04-28 16:27:39.799: E/AndroidRuntime(7405): java.lang.OutOfMemoryError
04-28 16:27:39.799: E/AndroidRuntime(7405): at android.util.Base64.encode(Base64.java:534)
04-28 16:27:39.799: E/AndroidRuntime(7405): at android.util.Base64.encode(Base64.java:494)
04-28 16:27:39.799: E/AndroidRuntime(7405): at com.zkl.util.ImageUtil.getImageStr(ImageUtil.java:32)
04-28 16:27:39.799: E/AndroidRuntime(7405): at com.zkl.yy.UploadActivity$8$1.run(UploadActivity.java:439)
04-28 16:27:39.799: E/AndroidRuntime(7405): at java.lang.Thread.run(Thread.java:1019)


-----------------------------------------------------------------------------------
这是我的转换Base64的方法:
public static String getImageStr(String path) {
String base64code=null;
FileInputStream fis = null;
ByteArrayOutputStream baos = null;
File file = new File(path);
if (file.exists()) {
try {
fis = new FileInputStream(path);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int count = 0;
try {
while ((count = fis.read(buffer)) >= 0) {
baos.write(buffer, 0, count);
}
base64code=new String(Base64.encode(baos.toByteArray(),Base64.DEFAULT));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
fis.close();
baos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return base64code;
}
前面一直都用这个方法,这次主要在照相后得到照片然后转换的时候出现了异常,照片大小一点几兆。
希望朋友们能给我解答下,谢谢!
...全文
580 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
刘亚涛 2014-05-28
  • 打赏
  • 举报
回复
你问题解决了吗?
franzhong 2012-04-28
  • 打赏
  • 举报
回复
照片不能压缩吗,超出内存了
这是没办法的事情,android就有这个短处
压缩图片或是换算法

80,493

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧