如何将文本上传到服务器而不影响图像质量,

时间:2016-11-07 11:45:52

标签: android

我通过排球和位图的帮助将图像上传到服务器并且我成功传递了数据,但是当我使用相机拍摄图像时,图像质量变得很差,而且当我传递大小超过500kb的图像时,应用程序会崩溃。为什么会这样? 任何人都可以帮助我,

这是我的相机意图执行的方式

 private void onCaptureImageResult(Intent data) {
    thumbnail = (Bitmap) data.getExtras().get("data");

    File destination = new File(Environment.getExternalStorageDirectory(),
            System.currentTimeMillis() + ".jpg");

    FileOutputStream fo;
    try {
        destination.createNewFile();
        fo = new FileOutputStream(destination);
        //fo.write(bytes.toByteArray());
        fo.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    if (thumbnail!=null){
        addImageNew.setImageBitmap(thumbnail);
    }


}

这就是我的画廊意图执行的方式

private void onSelectFromGalleryResult(Intent data) {
    thumbnail=null;
    if (data != null) {
        try {
            thumbnail =    MediaStore.Images.Media.getBitmap(getApplicationContext().getContentResolver(), data.getData());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    if (thumbnail!=null){
        addImageNew.setImageBitmap(thumbnail);
    }
}

这是我如何将Bitmap转换为字符串

 public String getStringImage(Bitmap bmp){
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bmp.compress(Bitmap.CompressFormat.JPEG, 90, baos);
    byte[] imageBytes = baos.toByteArray();
    String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
    return encodedImage;
}

注意:我只有图像质量和高尺寸图像传递问题

2 个答案:

答案 0 :(得分:0)

您可以尝试使用以下链接解决方案。它可能适合你。

200kb image to base64 cannot send to web service

答案 1 :(得分:0)

我没有找到调用getStringImage(Bitmap bmp)的位置,但你可以尝试做类似的事情:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 1;
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length, options);
getStringImage(bitmap);

或许您可以将compress更改为100,以获得高品质:

bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos);