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;
}
前面一直都用这个方法,这次主要在照相后得到照片然后转换的时候出现了异常,照片大小一点几兆。
希望朋友们能给我解答下,谢谢!
------解决方案--------------------
照片不能压缩吗,超出内存了
这是没办法的事情,android就有这个短处
压缩图片或是换算法