由于Android对图片使用内存有限制,若是加载几兆的大图片便内存溢出。Bitmap会将图片的所有像素(即长x宽)加载到内存中,如果图片分辨率过大,会直接导致内存溢出(java.lang.OutOfMemoryError),只有在BitmapFactory加载图片时使用BitmapFactory.Options对相关参数进行配置来减少加载的像素。
1、设置缩放大小对图片作处理
public Bitmap getBitmapFromFile(File dst,int width, int height){ |
public staticint computeSampleSize(BitmapFactory.Options options, |
/**
* 图片转换成字符串[BASE64]
*
* @return
*/
public String getImageBinary(String path) {
System.out.println("path--->" + path);
try {
Bitmap bitmap = getBitmapFromFile(new File(path),640,640);//scalePicture(path,640,640);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.PNG,100,baos);
String uploadBuffer = new String(Base64.encodeToString(baos.toByteArray(),Base64.DEFAULT));
baos.flush();
baos.close();
System.out.println("图片信息转换成字符串为:---->" + uploadBuffer);
return uploadBuffer;
}
catch(IOException e)
{
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
return null;
}
返回Base64字符串