Ver Mensaje Individual
  #3 (permalink)  
Antiguo 25/09/2016, 09:03
cesand209
 
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.