Como salvar um Bitmap em PNG ou JPG sem perder a qualidade?

  • Respostas:1
Yan
  • Posts no fórum: 1

18/12/2023, 03:06:00 via Web

Boa noite, tudo bem?

Gostaria de saber como salvar um Bitmap sem perder a qualidade. Pois, eu tiro a foto pela câmera do Celular, e quando vou salvar perde muita qualidade.

Segue o código:

launcherForCamera = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
        @Override
        public void onActivityResult(ActivityResult result)
        {
            if (result.getResultCode() == RESULT_OK)
            {
                Bitmap image = (Bitmap) result.getData().getExtras().get("data");

                if (image != null)
                {                       
                    File path = Environment.getExternalStoragePublicDirectory("/Teste/Fotos/");

                    if (!path.exists())
                    {
                        path.mkdir();
                    }

                    File file = new File(path, marker.getId() + "_" + System.currentTimeMillis() + ".png");

                    try
                    {
                        FileOutputStream outputStream = new FileOutputStream(file);

                        image.compress(Bitmap.CompressFormat.PNG, 100, outputStream);
                        Toast.makeText(getContext(), "FOTO SALVA COM SUCESSO", Toast.LENGTH_LONG).show();

                        outputStream.close();
                    }

                    catch (IOException e)
                    {
                        e.printStackTrace();
                        Toast.makeText(activity, "Houve um problema ao salvar a foto", Toast.LENGTH_LONG).show();
                    }

                }

                else
                {
                    Toast.makeText(getContext(), "Houve um problema ao tirar a foto", Toast.LENGTH_LONG).show();
                }


            }

            else
            {
                Toast.makeText(getContext(), "Houve um problema ao tirar a foto", Toast.LENGTH_LONG).show();
            }
        }
    });
Responder
Rubens Eishima
  • Admin
  • Equipe
  • Posts no fórum: 124

18/12/2023, 14:30:57 via Web

JPGs perdem qualidade mesmo.

No caso do JPG, você pode testar alterar os valores de compressão de imagem e ver se as diferenças servem para você:

                    image.compress(Bitmap.CompressFormat.PNG, ***100***, outputStream);

O "100" destacado define o nível de compressão, para JPGs, 100 tenta manter o máximo de qualidede, e 0 tenta obter o menor arquivo possível.

https://developer.android.com/reference/android/graphics/Bitmap.CompressFormat

útil?
Responder