Ver Mensaje Individual
  #5 (permalink)  
Antiguo 11/08/2005, 05:43
Avatar de renton
renton
 
Fecha de Ingreso: enero-2004
Ubicación: BCN (PPCC)
Mensajes: 573
Antigüedad: 20 años, 2 meses
Puntos: 1
A ver, yo necesito cambiar dinamicamente ese porcentaje para que todas las fotos que la gente suba a mi página tengan 50 Kb.
En teoria es tan facil como hacer:

Código:
$pesoImagen=filesize($nuevaImagen);   //pillo el peso de la imagen que a acaban de subir
$pesoIdeal=50;      //50 es el peso q quiero q tengan las fotos (kb arriba kb abajo)
$porcentaje= ($pesoIdeal * 100) / $pesoImagen; //regla de tres con la cual saco el porcentaje que tiene la foto del total para ser 50
$porcentaje=100-$porcentaje;  //Con esto saco el % autentico, el que poniendo el la función debería funcionar
Hasta aqui de p.m., la teórica funciona a la perfección.
Ahora, si hacemos:

Código:
imagejpeg($nuevaImagen,"", $porcentaje);
Pues se jode: Subes una foto de 350 Kb y te la deja en 17.

El problema está en la equivalencia de los porcentajes, que el que desarrolló la función imagejpeg se la pasó por el forro. Por eso pido otra función que juegue con porcentajes REALES. O sino, una que directamente le puedas pasar los Kb a reducir.

De todas formas ya he encontrado una solución (algo patatera): Hago un filesize de la imagen y si es mayor de 60kb la meto en un while donde se hace un imagejpeg con un porcentaje dinamico que va restandose 10 a cada loop. Al final del loop valido si el filesize es menor que 50 y si lo es salgo del while, sino, una vuelta mas con menos porcentaje.
__________________
"No et limites a contemplar aquestes hores que ara venen, baixa al carrer i participa.
No podran res davant un poble unit, alegre i combatiu!!"