Foros del Web » Programando para Internet » Javascript »

Redimensiona imagen con js

Estas en el tema de Redimensiona imagen con js en el foro de Javascript en Foros del Web. Hola compañeros, esa es mi consulta y lo que necesito hacer... alguna libreria o funcion js para reducir el peso de imagenes antes de hacer ...
  #1 (permalink)  
Antiguo 21/09/2016, 04:10
 
Fecha de Ingreso: julio-2011
Mensajes: 123
Antigüedad: 12 años, 9 meses
Puntos: 0
Redimensiona imagen con js

Hola compañeros, esa es mi consulta y lo que necesito hacer... alguna libreria o funcion js para reducir el peso de imagenes antes de hacer el upload de la misma con php. Es posible esto con alguna libreria?

Tengo un form donde los usuarios pueden subir 5 imagenes y claro si queren sobir todas y cada una minimamente pesa 3 o 4mb surge el problema de carga, tiempo de espera etc
..

Que me recomiendan ? Saludos.
  #2 (permalink)  
Antiguo 22/09/2016, 06:13
 
Fecha de Ingreso: noviembre-2015
Mensajes: 231
Antigüedad: 8 años, 5 meses
Puntos: 86
Respuesta: Redimensiona imagen con js

Si has trabajado con [URL="https://www.google.es/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=resize+image+javascript+before+upload"]canvas[/URL] no tendrás problemas en hacerlo
  #3 (permalink)  
Antiguo 25/09/2016, 09:03
 
Fecha de Ingreso: julio-2011
Mensajes: 123
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Redimensiona imagen con js

mpozo te agradezco tu aporte.

encontre esto a base a lo que me dijiste

https://github.com/mgkimsal/jsclientshrinker

se ve simple pero no lobro adaptarlo, no quiero lograr esa vista previa y demas detaller que muestra el ejemplo de ese codigo.

por medio de una fujncion js valido un formular y que que me reduzca la imagen de un input file que se llama userfile

asi modifique esas dos funciones js del proyecto

Código Javascript:
Ver original
  1. function _resize(img, maxWidth=200, maxHeight=200)
  2. {
  3.         var ratio = 1;
  4.  
  5.     var canvas = document.createElement("canvas");
  6.     canvas.style.display="none";
  7.     document.body.appendChild(canvas);
  8.  
  9.     var canvasCopy = document.createElement("canvas");
  10.     canvasCopy.style.display="none";
  11.     document.body.appendChild(canvasCopy);
  12.  
  13.     var ctx = canvas.getContext("2d");
  14.     var copyContext = canvasCopy.getContext("2d");
  15.  
  16.         if(img.width > maxWidth)
  17.                 ratio = maxWidth / img.width;
  18.         else if(img.height > maxHeight)
  19.                 ratio = maxHeight / img.height;
  20.  
  21.         canvasCopy.width = img.width;
  22.         canvasCopy.height = img.height;
  23. /*try {
  24.         copyContext.drawImage(img, 0, 0);
  25. } catch (e) {
  26.     document.getElementById('loader').style.display="none";
  27.     return false;
  28. }*/
  29.  
  30.         canvas.width = img.width * ratio;
  31.         canvas.height = img.height * ratio;
  32.         // the line to change
  33.         //ctx.drawImage(canvasCopy, 0, 0, canvasCopy.width, canvasCopy.height, 0, 0, canvas.width, canvas.height);
  34.         // the method signature you are using is for slicing
  35.         ctx.drawImage(canvasCopy, 0, 0, canvas.width, canvas.height);
  36.  
  37.         var dataURL = canvas.toDataURL("image/png");
  38.  
  39.     document.body.removeChild(canvas);
  40.     document.body.removeChild(canvasCopy);
  41.         return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
  42.  
  43.  
  44. };
  45.  
  46. function resize() {
  47.     var photo = document.getElementById("userfile");
  48.  
  49.  
  50.     if(photo.files!=undefined){
  51.  
  52.         var loader = document.getElementById("loader");
  53.         loader.style.display = "inline";
  54.  
  55.         var file  = photo.files[0];
  56.         document.getElementById("orig").value = file.fileSize;
  57.         var preview = document.getElementById("preview");
  58.         var r = new FileReader();
  59.         r.onload = (function(previewImage) {
  60.             return function(e) {
  61.                 var maxx = document.getElementById('maxx').value;
  62.                 var maxy = document.getElementById('maxy').value;
  63.                 previewImage.src = e.target.result;
  64.                 previewImage.onload = function() {
  65.                     var k = _resize(previewImage, maxx, maxy);
  66.                     if (k != false) {
  67.                         document.getElementById('base64').value= k;
  68.                         document.getElementById('upload').submit();
  69.                     } else {
  70.                         alert('problem - please attempt to upload again');
  71.                     }
  72.                 }
  73.             };
  74.         })(preview);
  75.         r.readAsDataURL(file);
  76.     } else {
  77.         alert("Seems your browser doesn't support resizing");
  78.     }
  79.     return false;
  80. }

y con esa codificacion lo que hago en mi js es llamar a la funcion
Código Javascript:
Ver original
  1. resize()

procesa todo perfecto pero jno hace la reduccion de la img

desde ya muchas gracias.

Etiquetas: funcion, js, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:40.