Foro

Home Forums Apache Cordova Compresión de imagenes.

This topic contains 7 replies, has 3 voices, and was last updated by  Melvin Juarez 3 meses, 2 semanas .

Viendo 8 respuestas - de la 1 a 8 (de 8 en total)
  • Compresión de imagenes.

    Intervenciones
  • Melvin Juarez 
    Participant

    Buenas, estoy desarrollando una aplicación que envía imágenes al servidor, específicamente fotos tomadas con el plugin de la cámara.
    Con esto obtengo el base64 de la imagen y así la subo al servidor, el problema que tengo es que a veces, las imágenes pesan mucho y Ajax no las sube porque tarda mucho, entonces se corta la transmisión.
    Existe alguna librería para comprimir las imágenes antes de enviarlas?

    Esta es la configuración del plugin.

     Code: configuración del plugin (select
    1.
    2.
    3.
    4.
    5.
    6.

    navigator.camera.getPicture(onSuccess, onFail, {
        quality: 50,
        destinationType: Camera.DestinationType.DATA_URL,
        saveToPhotoAlbum: true,
        encodingType    : navigator.camera.EncodingType.JPEG,
      });

    Gracias de antemano.

    • This topic was modified 3 meses, 3 semanas by  Melvin Juarez. Reason: Insertar codigo

    • This topic was modified 3 meses, 3 semanas by  Melvin Juarez. Reason: Insertar codigo
    Jose Jesus Perez Rivas
    Jose Jesus Perez Rivas 
    Keymaster

    Hola @melvin_juarez,

    Con el mismo plugin de captura de imágenes puedes tratarlas, entre el parámetro “quality”, “targetWidth” y “targetHeight”, podrás jugar mucho. Por ejemplo:

     Code: arbitrary (select
    1.
    2.
    3.
    4.
    5.
    6.
    7.
    8.
    9.
    10.
    11.
    12.
    13.
    14.
    15.
    16.
    17.
    18.

    navigator.camera.getPicture(
        function(success){
            console.log(success);
        },
        function(fail){
            console.log(fail);
        },
        {
            quality: 50,
            destinationType: Camera.DestinationType.DATA_URL,
            saveToPhotoAlbum: true,
            encodingType : navigator.camera.EncodingType.JPEG,
            quality: 80,
            targetWidth: 800,
            targetHeight: 800,
            correctOrientation: true
        }
    );

    Espero te sea de ayuda :)


    CEO y Director de desarrollo en Cero y Uno Desarrollamos Aplicaciones – ¿tienes algún proyecto? ¡trabajemos juntos! contacto@ceroyuno.eshttp://www.ceroyuno.es Fundador de PhoneGap Spain http://www.phonegapspain.com Twitter: https://twitter.com/JoseJ_PR


    Melvin Juarez 
    Participant

    Muchas gracias, voy a probarlo :D


    Melvin Juarez 
    Participant

    Funcionó a la perfección, muchas gracias por la ayuda.


    Melvin Juarez 
    Participant

    Una ultima duda, ¿alguna forma de comprimir las que se suben desde el carrete?

    Gracias por la ayuda.


    mslarco 
    Participant

    Si lo puedes hacer.

    Mira lo mas efectivo que yo encontrado es lo siguiente:

     Code: arbitrary (select
    1.
    2.
    3.
    4.
    5.
    6.
    7.
    8.
    9.
    10.
    11.
    12.
    13.
    14.
    15.
    16.
    17.

    Uri uri = Uri.parse(PATH_FILE);

                    Bitmap bitmap = PhotoLoader.init().from(uri.getPath()).requestSize(300, 300).getBitmap();

                    if (!visitaFotografia.getOrientacion().equals("") && Integer.valueOf(visitaFotografia.getOrientacion()) > 0) {

                        Log.d(Constantes.TAG, "FOTO GIRADA" + visitaFotografia.getOrientacion());

                        Matrix matrix = new Matrix();

                        matrix.postRotate(Integer.valueOf(visitaFotografia.getOrientacion()));

                        bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);

                    }

                    String encodeString = ImageBase64.encode(bitmap);

    Con la libreria https://github.com/kosalgeek/PhotoUtil la reduce eficientemente.

    • This reply was modified 3 meses, 2 semanas by Jose Jesus Perez Rivas Jose Jesus Perez Rivas. Reason: Debes utilizar el botón de publicar código que tienes en la caja de texto del foro

    • This reply was modified 3 meses, 2 semanas by Jose Jesus Perez Rivas Jose Jesus Perez Rivas. Reason: Debes utilizar el botón de publicar código que tienes en la caja de texto del foro
    Jose Jesus Perez Rivas
    Jose Jesus Perez Rivas 
    Keymaster

    Hola @melvin_juarez,

    Me alegro que te fuera de ayuda :)

    Para la compresión de imágenes que vienen de la librería, solo tendrás que añadir un campo nuevo “sourceType”, en esta url tienes algo más de info: https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-camera/#module_Camera.PictureSourceType

    Espero te sea de ayuda :)


    CEO y Director de desarrollo en Cero y Uno Desarrollamos Aplicaciones – ¿tienes algún proyecto? ¡trabajemos juntos! contacto@ceroyuno.eshttp://www.ceroyuno.es Fundador de PhoneGap Spain http://www.phonegapspain.com Twitter: https://twitter.com/JoseJ_PR


    Melvin Juarez 
    Participant

    Gracias por las respuestas, todo funcionó a la perfección.


Viendo 8 respuestas - de la 1 a 8 (de 8 en total)

You must be logged in to reply to this topic.