从Android应用程序将照片上传到服务器后,它失去了质量

问题描述 投票:0回答:1

虽然我从图库中选择图像并在ImageView中显示它。图像质量还可以。但是,在服务器上上传图像后,图像质量下降并变得模糊。我通过此代码从相机获取图像。

 private void onCaptureImageResult(Intent data) {
    bitmap = (Bitmap) data.getExtras().get("data");
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes);

    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();
    }

    imageView.setImageBitmap(bitmap);
}

然后,我做了这个工作-

  private String imageToString(Bitmap bitmap){
    ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG,100,byteArrayOutputStream);
    byte[] imgByte=byteArrayOutputStream.toByteArray();
    return Base64.encodeToString(imgByte,Base64.DEFAULT);
}

并使用此功能压缩我选择的照片。但是,这会使图像质量下降,并且图像在服务器上变得模糊。我为什么要面对这个问题?

android
1个回答
0
投票

您可以使用.png格式,因为它是无损的,并且不会降低图像质量。另一方面,.jpeg格式与此相反。

private String imageToString(Bitmap bitmap){
    ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
    byte[] imgByte=byteArrayOutputStream.toByteArray();
    return Base64.encodeToString(imgByte, Base64.DEFAULT);
}
© www.soinside.com 2019 - 2024. All rights reserved.