android中base64编码期间内存不足异常?

android中base64编码期间内存不足异常?,android,asynchronous,upload,base64,multipartentity,Android,Asynchronous,Upload,Base64,Multipartentity,我必须用multipart entity从android上传四张图片到服务器。我用base64解码发送图片。它显示内存不足异常。我已经发布了下面的代码。 请帮我修复这个错误 private String resize(String path) { ByteArrayOutputStream bAOS; bitmap = BitmapFactory.decodeFile(path); Log.i("RESIZE", "RESIZE"); // Toast.make

我必须用multipart entity从android上传四张图片到服务器。我用base64解码发送图片。它显示内存不足异常。我已经发布了下面的代码。 请帮我修复这个错误

private String resize(String path) {

    ByteArrayOutputStream bAOS;
    bitmap = BitmapFactory.decodeFile(path);
    Log.i("RESIZE", "RESIZE");
    // Toast.makeText(getApplicationContext(), "resizing first image",
    // Toast.LENGTH_LONG).show();
    String encodedImage;
    byte[] imageBytes;

    try {
        Log.d("ActivityNewsDisplay", "inside try one");
        bAOS = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 80, bAOS);
        imageBytes = bAOS.toByteArray();
        encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);

        return encodedImage;
    } catch (Exception e) {
        Log.d("ActivityNewsDisplay", "inside catch one");
        // TODO: handle exception
        return null;
    } catch (OutOfMemoryError e) {
        try {
            Log.d("ActivityNewsDisplay", "inside catch one");
            Log.d("ActivityNewsDisplay", "inside try two");
            bAOS = new ByteArrayOutputStream();

            bitmap.compress(Bitmap.CompressFormat.JPEG, 25, bAOS);
            imageBytes = bAOS.toByteArray();
            encodedImage = Base64
                    .encodeToString(imageBytes, Base64.DEFAULT);

            return encodedImage;

        } catch (OutOfMemoryError e1) {
            Log.d("ActivityNewsDisplay", "inside catch two");
            try {
                Log.d("ActivityNewsDisplay", "inside try three");
                bAOS = new ByteArrayOutputStream();
                Toast.makeText(getApplicationContext(), "resize one",
                        Toast.LENGTH_LONG).show();
                bitmap.compress(Bitmap.CompressFormat.JPEG, 10, bAOS);
                imageBytes = bAOS.toByteArray();
                encodedImage = Base64.encodeToString(imageBytes,
                        Base64.DEFAULT);

                return encodedImage; // TODO: handle exception

            } catch (Exception e2) {
                Log.d("ActivityNewsDisplay", "inside catch three");

                return null;
            }
        }
    }

}
我在异步任务中调用此函数

        @Override
    protected String doInBackground(String... params) {
        Log.i("inside asynchronous task", "inside task");
        // TODO Auto-generated method stub
        decodedImage = new String[params.length];
        for (int i = 0; i < params.length; i++) {
            decodedImage[i] = resize(params[i]);
        }
        publishProgress("progress");
        return null;
    }
@覆盖
受保护的字符串doInBackground(字符串…参数){
Log.i(“内部异步任务”、“内部任务”);
//TODO自动生成的方法存根
decodedImage=新字符串[参数长度];
对于(int i=0;i

当图像大小较大时会发生内存不足异常?

当应用程序的堆大小超过为应用程序分配的内存时,会发生内存不足异常。您需要缩小位图,但缩放位图可能会降低图像质量。。我建议你看看这里的链接