¿Cómo puedo comprimir el tamaño y la calidad del archivo al cargar imágenes?

SAWYU

¿Cómo puedo comprimir el tamaño y la calidad del archivo al cargar imágenes?

Ya terminé de subir el archivo a firebase, ¿cómo comprimir el archivo?

Porque cuando el tamaño del archivo es grande, se ralentizará la carga en la vista de reciclaje.

Entonces quiero comprimir el archivo.

 Uri imageUri = imageListUri.get(index);
        if(spinner.getSelectedItem().toString().equals(getApplicationContext().getResources().getString(R.string.choose_sub))) {
            AlertDialog alertDialog = new AlertDialog.Builder(this)
                    .setTitle(getApplicationContext().getResources().getString(R.string.alert_error))
                    .setMessage(getApplicationContext().getResources().getString(R.string.choose_sub))
                    .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                        }
                    }).create();
            alertDialog.show();
        } else if(image_check.equals("ok")) {
            final ProgressDialog progressDialog = new ProgressDialog(this);
            progressDialog.setMessage(getApplicationContext().getResources().getString(R.string.posting));
            progressDialog.show();

            if (imageUri != null) {
                final StorageReference filerefrence = storageReference.child(System.currentTimeMillis()
                        + "." + getFileExtension(imageUri));
                // scaling the image
                int scaleDivider = 1;
                try {
                    Bitmap fullBitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);
                    int scaleWidth = fullBitmap.getWidth() / scaleDivider;
                    int scaleHeight = fullBitmap.getHeight() / scaleDivider;
                    byte[] downsizedImageBytes =
                            getDownsizedImageBytes(fullBitmap, scaleWidth, scaleHeight);

                    uploadTask = filerefrence.putBytes(downsizedImageBytes);
                } catch (IOException e) {
                    e.printStackTrace();
                }
static public byte[] getDownsizedImageBytes(Bitmap fullBitmap, int scaleWidth, int scaleHeight) throws IOException {

        Bitmap scaledBitmap = Bitmap.createScaledBitmap(fullBitmap, scaleWidth, scaleHeight, true);

        // 2. Instantiate the downsized image content as a byte[]
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        scaledBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);

        return baos.toByteArray();
    }

Entonces, ¿es correcto?

try {
                    Bitmap fullBitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);
                    ByteArrayOutputStream out = new ByteArrayOutputStream();
                    fullBitmap.compress(Bitmap.CompressFormat.JPEG, 80, out); // Here 100 is the quality in percent of the image
                    Bitmap decoded = BitmapFactory.decodeStream(new ByteArrayInputStream(out.toByteArray()));

                    int scaleWidth = fullBitmap.getWidth() / scaleDivider;
                    int scaleHeight = fullBitmap.getHeight() / scaleDivider;
                    byte[] downsizedImageBytes =
                            getDownsizedImageBytes(fullBitmap, scaleWidth, scaleHeight);

                    uploadTask = filerefrence.putBytes(downsizedImageBytes);
                } catch (IOException e) {
                    e.printStackTrace();
                }
gtxtreme

Puedes hacerlo usando la BitmapFactoryclase así

Bitmap original = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri)
ByteArrayOutputStream out = new ByteArrayOutputStream();
original.compress(Bitmap.CompressFormat.JPEG, 100, out); // Here 100 is the quality in percent of the image
Bitmap decoded = BitmapFactory.decodeStream(new ByteArrayInputStream(out.toByteArray()));

Tenga en cuenta que PNG ya es un formato sin pérdidas, por lo que no hará ninguna diferencia durante la compresión, si realmente desea ver los efectos, use JPEG

Acepta calidad 0 - 100

0 = Compresión MÁXIMA (calidad mínima adecuada para imágenes pequeñas)

100 = Mínima Compresión (Calidad MÁXIMA adecuada para imágenes grandes)

Créditos a esta respuesta

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

¿Cómo puedo comprimir el tamaño y la calidad del archivo al cargar imágenes?

¿Cómo puedo eliminar el retraso del desplazamiento al cargar imágenes desde el almacenamiento interno?

WordPress, ¿cómo cambiar el tamaño automáticamente al cargar todas las imágenes y eliminar el original de la imagen en el servidor?

Cómo obtener el tamaño del archivo al usar ajaxSubmit antes de cargar el archivo

¿Cómo puedo cambiar el tamaño de la imagen con PIL al cargar y servirlos con matraz nublado?

¿Cómo limitar el tamaño del archivo al cargar con multer?

Error de PHP 'El tamaño del archivo es cero bytes' al cargar la imagen SilverStripe

¿Cómo puedo cambiar el tamaño (no comprimir) varias imágenes en un documento de MS Word?

Cómo mantener la estructura de carpetas al convertir, cambiar el tamaño y mover imágenes usando powershell

Swift iOS -¿Cómo comprimir el tamaño del archivo de video incrustado almacenado?

Sube imágenes usando HTML5 y reduce la calidad en el lado del usuario

¿Cómo puedo aumentar el tamaño de la carga del archivo .net core 2.1?

Si yo estoy pidiendo al usuario introducir un archivo, y no existe el archivo, ¿cómo puedo seguir pidiendo el nombre del archivo sin la interrupción del programa?

¿Cómo puedo pasar parámetros y cargar imágenes al mismo tiempo a una API web?

Obtenga el tamaño del archivo, el ancho y el alto de la imagen antes de cargar

¿Cómo puedo cambiar el tamaño de las imágenes y guardarlas con Python?

¿Cómo puedo obtener el tamaño del archivo y la fecha de modificación en la API de Google Drive V3?

¿Cómo puedo cargar imágenes .jpg en el directorio debajo del directorio?

¿Cómo puedo cargar imágenes y datos en la misma solicitud con angular y resteasy?

¿Cómo puedo omitir el archivo de base de datos o el archivo de modelo al cargar la página principal en Codeigniter?

Cargar imágenes desde el archivo c #

El archivo de descarga no muestra el tamaño y la hora totales del archivo (C #)

El archivo de descarga no muestra el tamaño y la hora totales del archivo (C #)

Mostrar la URL del archivo al cargar el archivo

php cargar imágenes y guardar el nombre del archivo en mysql

Cómo limitar el tamaño del archivo y el tipo MIME al cargarlo en S3

Django: ¿la carga de archivo / imagen personalizada obtiene la ruta del archivo al cargar? procesar imágenes al cargarlas?

Recorta y cambia el tamaño de un grupo de imágenes sin perder calidad

Cómo cargar el tamaño del control desde el archivo de recursos en WPF

TOP Lista

CalienteEtiquetas

Archivo