Foros del Web » Programando para Internet » PHP »

Buscando script

Estas en el tema de Buscando script en el foro de PHP en Foros del Web. Llevo ya varios dias buscando un script que haga lo que os cuento a continuación. Va sobre la optimización de fotos para subir. Tengo unas ...
  #1 (permalink)  
Antiguo 25/06/2005, 06:56
 
Fecha de Ingreso: junio-2005
Mensajes: 20
Antigüedad: 18 años, 10 meses
Puntos: 0
Buscando script

Llevo ya varios dias buscando un script que haga lo que os cuento a continuación.

Va sobre la optimización de fotos para subir. Tengo unas galerias y hay mucha gente que a la hora de subir la foto, lo hace a unos tamaños enormes, tanto en pixeles como en Kb, y eso de redimensionar les suena un poco a chino a muchos. Lo que voy buscando es un script donde los usuarios puedan meter la foto desde el pc al tamaño que sea, y que el script se encargue de reducirla a un tamaño prefijado y sin perder calidad. Y la muestre en la página, para que el usuario la pueda volver a coger y subirla ya reducida.

No se si me he explicado con claridad, si no ya me diréis y aclaro lo que haga falta...

En estos foros encontre esto: http://desaweb.forosdelweb.com/showt...ensionar+fotos . Pero no se como hacerlo funcionar o si es lo que realmente quiero.

Última edición por H3R0; 25/06/2005 a las 07:02
  #2 (permalink)  
Antiguo 25/06/2005, 22:32
 
Fecha de Ingreso: junio-2005
Mensajes: 20
Antigüedad: 18 años, 10 meses
Puntos: 0
¿Estáis ya todos de vacaciones...?
  #3 (permalink)  
Antiguo 26/06/2005, 03:07
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Ja!.. justamente para ese usuario (y por ese post --no pudo tampoco--) hice un script bastante sencillo.. por suerte aún lo conservo (raro...).
Código PHP:
<?php
function redimencionar($file) {
// Función que REEMPLAZA una imágen JPEG por otra con diferenetes dimenciones...
// Se da por echo la imágen existe y es una imágen JPEG (no se hacen validaciones)

    
$imagen ImageCreateFromJPEG($file);
        
unlink($file); // BORRAMOS el archivo original
    
$width  imagesx($imagen);
    
$height imagesy($imagen);
    
    
$nueva_anchura  200// Define aquí el ancho requerdo
    
$nueva_altura = ($nueva_anchura $height) / $width ;// Para un alto proporcinal (RECOMENDADO) ó ingresa directamente el alto requerido.
    
        
if (function_exists("imagecreatetruecolor")) {
           
$calidad ImageCreateTrueColor($nueva_anchura$nueva_altura);
        } else 
$calidad ImageCreate($nueva_anchura$nueva_altura);

    
ImageCopyResized($calidad$imagen0000$nueva_anchura$nueva_altura$width$height);
    
ImageJPEG($calidad$file100);
    
imagedestroy($imagen);
    return 
true;
// Forma de uso:
// redimencionar(/ruta/archivo.jpg) 
}

// Suponiendo se tiene <input type="file" name="imagen">
    
if (is_uploaded_file($_FILES['imagen']['tmp_name'])) {
        if (
$_FILES['imagen']['type'] == "image/jpeg" || $_FILES['imagen']['type'] == "image/pjpeg"){
            
$nombre"imagenes/".$_FILES['imagen']['name']; // Conserva su nombre original, se guarda en una carpeta imagenes
            
if(move_uploaded_file($_FILES['imagen']['tmp_name'], $nombre)) {
                if(
redimencionar($nombre)) {// una vez definido el nombre del archivo no importa dónde se llame a la función
echo "<img src=\"$nombre\">";
                } else echo 
"La función redimencionar() tubo fallos<br>";
            } else echo 
"<b>ERROR:</b><br> No se pudo mover el archivo<br>";
        } else echo 
"<b>Tipo de archívo inválido</b><br>";
    } else echo 
"Error al subir el archivo....<br>";
?>
Lo puedes ver trabajando --caducado--. A él le satisfació, no sé a tí.. como siempre mi intención es meramente explicativa... sí consultas las FAQ se trata el tema.

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 15/03/2006 a las 16:33
  #4 (permalink)  
Antiguo 26/06/2005, 03:21
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Ja!... me acabo de dar cuenta quitaron GD... ignoro si sea temporalmente.. pero con los requerimentos necesarios funciona.. os doy mi palabra.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 26/06/2005, 18:50
 
Fecha de Ingreso: junio-2005
Mensajes: 20
Antigüedad: 18 años, 10 meses
Puntos: 0
Muchísimas gracias!!, es justamente lo que iba buscando. Ya lo he instalado y funciona a la perfección.
  #6 (permalink)  
Antiguo 27/06/2005, 05:52
 
Fecha de Ingreso: junio-2005
Mensajes: 20
Antigüedad: 18 años, 10 meses
Puntos: 0
Bueno, como ya dije antes el script va muy bien, pero me gustaria que me ayudarais a hacerle un par de ajustes.

1º.- No habria manera de que al subir una foto más pequeña que el ancho que tengo puesto en el script (640), dara un error o no dejara subirla....?

2º.- Se podrian redimensionar tambien las fotos verticales? Por ejemplo, una imagen de 800x600 la deja a 640x468, osea bien. El problema está con las fotos verticales, quisiera que al subir una de 600x800 por ejemplo, también la redimensionara proporcionalmente poniendola a 468x640.

¿Es posible lo que pido...? ¿Alguien me ayuda a hacerlo?

Gracias y un saludo!
  #7 (permalink)  
Antiguo 27/06/2005, 09:44
 
Fecha de Ingreso: noviembre-2003
Mensajes: 383
Antigüedad: 20 años, 5 meses
Puntos: 2
Para eso tienes que jugar un poco con el script.

Ya tienes el ancho y el alto en dos variables:

$width = imagesx($imagen);
$height = imagesy($imagen);

ahora tienes que poner las condiciones necesarias ( if ... ) que hagan que si el ancho es 800 la variable $nueva_anchura = ... sea 640 y si el ancho es 600 la variable $nueva_anchura = ... sea 468.

y tambien una condición que haga que si $width = ... es meno que 640 se salte el resto del script.


Saludos.
  #8 (permalink)  
Antiguo 27/06/2005, 11:06
 
Fecha de Ingreso: junio-2005
Mensajes: 20
Antigüedad: 18 años, 10 meses
Puntos: 0
Gracias pellagofio, la cosa es que no tengo mucha idea de php, estoy muy muy verde en este lenguaje.

Si no es mucho pedir...¿Me puede alguien ayudar a hacer lo que dice pellagofio...? ¿Seria muy complicado?

Gracias de nuevo.
  #9 (permalink)  
Antiguo 27/06/2005, 16:13
 
Fecha de Ingreso: junio-2005
Mensajes: 20
Antigüedad: 18 años, 10 meses
Puntos: 0
No tiene que ser tan complicado no...? Por favor......., ayudarme!!!
  #10 (permalink)  
Antiguo 28/06/2005, 01:38
 
Fecha de Ingreso: noviembre-2003
Mensajes: 383
Antigüedad: 20 años, 5 meses
Puntos: 2
Bueno, aquí te dejo el código. NO lo he probado, pero creo que funcionará.


<?php
function redimencionar($file) {
// Función que REEMPLAZA una imágen JPEG por otra con diferenetes dimenciones...
// Se da por echo la imágen existe y es una imágen JPEG (no se hacen validaciones)

$imagen = ImageCreateFromJPEG($file);
unlink($file); // BORRAMOS el archivo original
$width = imagesx($imagen);
$height = imagesy($imagen);

if (height<640) //# principio del if 1
{

if (Width=800)
$nueva_anchura = 640;
if ($width=600)
$nueva_anchura = 468;


$nueva_altura = ($nueva_anchura * $height) / $width ; //# Para un alto proporcinal (RECOMENDADO) ó ingresa directamente el alto requerido.

if (function_exists("imagecreatetruecolor"))
{
$calidad = ImageCreateTrueColor($nueva_anchura, $nueva_altura);
}
else
$calidad = ImageCreate($nueva_anchura, $nueva_altura);

ImageCopyResized($calidad, $imagen, 0, 0, 0, 0, $nueva_anchura, $nueva_altura, $width, $height);
ImageJPEG($calidad, $file, 100);
imagedestroy($imagen);
return true;
// Forma de uso:
// redimencionar(/ruta/archivo.jpg)
}

// Suponiendo se tiene <input type="file" name="imagen">
if (is_uploaded_file($_FILES['imagen']['tmp_name']))
{
if ($_FILES['imagen']['type'] == "image/jpeg" || $_FILES['imagen']['type'] == "image/pjpeg")
{
$nombre= "imagenes/".$_FILES['imagen']['name']; // Conserva su nombre original, se guarda en una carpeta imagenes
if (move_uploaded_file($_FILES['imagen']['tmp_name'], $nombre))
{
if (redimencionar($nombre)) // una vez definido el nombre del archivo no importa dónde se llame a la función
{
echo "<img src=\"$nombre\">";
}
else
echo "La función redimencionar() tubo fallos<br>";
}
else
echo "<b>ERROR:</b><br> No se pudo mover el archivo<br>";
}
else
echo "<b>Tipo de archívo inválido</b><br>";
}
else
echo "Error al subir el archivo....<br>";

}
else
{
echo "Tamaño de la imagen no permitido...";
} //# fin del if 1
?>
  #11 (permalink)  
Antiguo 28/06/2005, 02:09
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
mmmm... en realiadad el código que se encarga de redimencionar es una función.. no puedes poner un if dentro de la función y cerrarlo fuera de ésta ... pero por ahí va...

Veamos.. igual sin probar:
Código PHP:
<?php
function redimencionar($file) {
// Función que REEMPLAZA una imágen JPEG por otra con diferenetes dimenciones...
// Se da por echo la imágen existe y es una imágen JPEG (no se hacen validaciones)

    
$imagen ImageCreateFromJPEG($file);
        
unlink($file); // BORRAMOS el archivo original
    
$width  imagesx($imagen);
    
$height imagesy($imagen);
if(
$width>=640) { // condición de "si es menor"
if($height>=800) { // condición de si "altura es mayor ó igual a 800
     
$nueva_altura640;
     
$nueva_anchura= ($nueva_altura*$width)/$height;
} else { 
// sino...  
    
$nueva_anchura  200// Define aquí el ancho requerdo
    
$nueva_altura = ($nueva_anchura $height) / $width ;// Para un alto proporcinal (RECOMENDADO) ó ingresa directamente el alto requerido.
// fin de condición de las alturas   
        
if (function_exists("imagecreatetruecolor")) {
           
$calidad ImageCreateTrueColor($nueva_anchura$nueva_altura);
        } else 
$calidad ImageCreate($nueva_anchura$nueva_altura);

    
ImageCopyResized($calidad$imagen0000$nueva_anchura$nueva_altura$width$height);
    
ImageJPEG($calidad$file100);
    
imagedestroy($imagen);
    return 
true;
} else {
// cierre de condicón "si es menor"
    
imagedestroy($imagen); // igual destuimos la imágen y regresamos un false que nos indicará el error
    
return false;
}
// Forma de uso:
// redimencionar(/ruta/archivo.jpg)
}

// Suponiendo se tiene <input type="file" name="imagen">
    
if (is_uploaded_file($_FILES['imagen']['tmp_name'])) {
        if (
$_FILES['imagen']['type'] == "image/jpeg" || $_FILES['imagen']['type'] == "image/pjpeg"){
            
$nombre"imagenes/".$_FILES['imagen']['name']; // Conserva su nombre original, se guarda en una carpeta imagenes
            
if(move_uploaded_file($_FILES['imagen']['tmp_name'], $nombre)) {
                if(
redimencionar($nombre)) {// una vez definido el nombre del archivo no importa dónde se llame a la función
echo "<img src=\"$nombre\">";
                } else echo 
"La imágen es de dimenciones menor a lo permitido<br>";
            } else echo 
"<b>ERROR:</b><br> No se pudo mover el archivo<br>";
        } else echo 
"<b>Tipo de archívo inválido</b><br>";
    } else echo 
"Error al subir el archivo....<br>";
?>
... no es complicado, es cuestión de pensarle e intentarlo... mejor pellagofio lo intentó...

www.php.net/if
www.php.net/function

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #12 (permalink)  
Antiguo 28/06/2005, 04:44
 
Fecha de Ingreso: junio-2005
Mensajes: 20
Antigüedad: 18 años, 10 meses
Puntos: 0
Cita:
Iniciado por jam1138
... no es complicado, es cuestión de pensarle e intentarlo... mejor pellagofio lo intentó...
Lo sé jam1138, siempre hay que intentarlo antes, pero es que no tengo ni idea de php y no sabia como meterle mano al código. Pero poco a poco y con gente como la que hay aquí, cada día aprendo cosas nuevas.

De todas formas, os felicito y agradezco enormemente el trabajo y el haberme ayudado. El script va fenomenal, gracias de verdad por las molestias que os habeis tomado conmigo.

¿Me dejáis que os haga una consulta más...?

Veréis..., como ya he dicho antes, este script lo voy a utilizar para que la gente que no sabe redimensionar o les cuesta mucho trabajo, pueda reduzcir sus fotos para subir a la web. Dicho esto, mi pregunta es la siguiente: ¿Habria manera de reducir también la resolución de la foto que se suba? Es decir, si uno sube una foto de 72 píxeles/pulgada pues que el script la deje igual y solo reduzca el tamaño, pero si es superior a 72 p/p que la reduzca a 72. De esta forma, el script quedaria totalmente completo para el uso que se le daria, ya que más o menos quedaria la foto totalmente optimizada para subirla a la web.

¿Estaré abusando mucho de vuestra sabiduria...? Espero que no..., ya que no es mi intención.

1.000 gracias! Saludos!!

Última edición por H3R0; 28/06/2005 a las 04:49
  #13 (permalink)  
Antiguo 28/06/2005, 05:12
 
Fecha de Ingreso: junio-2005
Mensajes: 20
Antigüedad: 18 años, 10 meses
Puntos: 0
He estado probando el script con diferentes tamaños y va bien, pero por ejemplo, si subo una foto de 587x812 salta el error: "La imágen es de dimenciones menor a lo permitido". Y si subo una de 507x728, la pone a 640x918. Lo que quiero es que no reduzca las fotos por debajo de 640x640 y que las reduzca con las iguales o superiores a 800x800. ¿Seria posible...?

Última edición por H3R0; 28/06/2005 a las 09:33
  #14 (permalink)  
Antiguo 28/06/2005, 11:58
 
Fecha de Ingreso: junio-2005
Mensajes: 20
Antigüedad: 18 años, 10 meses
Puntos: 0
Creo que me estoy liando...
  #15 (permalink)  
Antiguo 28/06/2005, 12:55
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 18 años, 10 meses
Puntos: 2
Bueno, no es nada dificil lo que quieres hacer. Solamente con un www.php.net/if y un poco de ingenio estoy seguro que lo sacaras. Tambien te recomiendo que estudiaras las funciones de la libreria GD, y que busques mas información en el manual www.php.net. Busca las funciones imagesx() y imagesy() que estas seran las que te ayuden a realizar esto. Si en unos dias leyendo lo que dije no logras realizarlo, te doy mi palabra, te ayudare, pero lo gracioso de esto es que aprenderas si lees, no si te pasan los script's ya echos. Saludos.
  #16 (permalink)  
Antiguo 28/06/2005, 19:51
 
Fecha de Ingreso: junio-2005
Mensajes: 20
Antigüedad: 18 años, 10 meses
Puntos: 0
Leo y leo amigo DarioDario y cada vez aprendo más, te lo aseguro. Pero como ya dije antes, php es un lenguaje que desconozco casi por completo. Al poner el hilo, lo hice partiendo de la idea de que en un foro de gurus del php, simples consultas como las que hice, a ustedes les resultaria muchísimo más facil por experiencia y con emplear tan solo unos minutos de vuestro tiempo, me ayudarian enormemente. Una de las cosas por las que creo que unos foros son interesantes, es porque la gente se ayuda una a la otra.

Si no me ayudáis con esto, posiblemente se quede como está hasta dentro de muuuuuucho tiempo que logre conseguir el código por mi mismo ó incluso quedaria en el olvido. Ya que también tengo que decir, que esto de hacer webs lo tengo como hobby, no como profesión y muchas veces no dispongo del tiempo que quisiera para dedicarme a esto. De todas formas es una cosa que me gusta e intento aprender leyendo todo lo que puedo.

Anda... ayudarme solo a esto y no os molesto más, por ahora...
  #17 (permalink)  
Antiguo 28/06/2005, 22:10
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
Iniciado por H3R0
Leo y leo amigo DarioDario y cada vez aprendo más, te lo aseguro. Pero como ya dije antes, php es un lenguaje que desconozco casi por completo.
Un if() no es propio de PHP... es lo básico de la propgramación (lo primeritito que debe uno aprender ); se basa en un simple "sí se cumple esto, haz esto"... osease, toma una desición de "sí" o "no" un pensamiento muy primitivo.
Cita:
Al poner el hilo, lo hice partiendo de la idea de que en un foro de gurus del php, simples consultas como las que hice, a ustedes les resultaria muchísimo más facil por experiencia y con emplear tan solo unos minutos de vuestro tiempo, me ayudarian enormemente. Una de las cosas por las que creo que unos foros son interesantes, es porque la gente se ayuda una a la otra.
Te recomiendo leas el enlace de mi firma (el de las respuestas). Entenderás porque un Gurú (yo no lo soy... definitivo) no te dará un minuto para responder algo "tan fácil"... y doy toda la razón...
Cita:
Si no me ayudáis con esto, posiblemente se quede como está hasta dentro de muuuuuucho tiempo que logre conseguir el código por mi mismo ó incluso quedaria en el olvido. Ya que también tengo que decir, que esto de hacer webs lo tengo como hobby, no como profesión y muchas veces no dispongo del tiempo que quisiera para dedicarme a esto. De todas formas es una cosa que me gusta e intento aprender leyendo todo lo que puedo.
Con todo respeto (no me mal interpretes, intento hablar con honestidad), ¿qué pudiese importar a alguién lo que suseda con tu código??... eres tú el interezado(a) y pués... el cuanto te tardés ó el que quede olvidado ó el que logres hacerlo (mis mejores deceos) creo tiene sin cuidado a muchos (insisto, no hablo por mí, hablo como "consejo".. como "realidad").... a menos que hagas algo espectacular entonces sí tendrás a gente pendiente de lo que hagas y te tocará a tí el que no te importé lo que les pase ... así es la naturaleza.
Y bueno... en efecto, el propósito de los foros es para discutir constructuvamente, compartir y aprender (no enseñar...) en la medida de lo posible... Ayuda se ofrece, pero será eso.. "ayuda", algunas veces en forma de enlaces, otras con simples comentarios... información... creo esa es la mejor ayuda que uno puede dar ... pedir código siempre lo he visto como "haganme mi trabajo" (no lo digo por tí)...

Te recomiendo igual leas este enlace: http://www.forosdelweb.com/f18/como-preguntar-foro-php-cosas-tener-cuenta-295415/ Básicamente, se te podría ayudar si dijeras qué haz intentado; ¿dónde esta el código que haz modificado?...

... pero... a trabajar...
Cita:
Lo que quiero es que no reduzca las fotos por debajo de 640x640 y que las reduzca con las iguales o superiores a 800x800.
Traducción:
- if($width<640 && $heigth<640) { "no reducimos" }
- if($width<800 && $heigth<800) { "reducimos" }

¿qué es "&&"??; sinónimo de "AND" y que devuelve TRUE (que se cumplió pués) si ambas condiciones (altura "Y" ancho menor a 640) se cumplieron: http://www.php.net/manual/es/languag...rs.logical.php

... perdón por no modificar el código... pero temo que no entendí la situación ¿qué pasa con las imágenes que están entre 640X640 y 800X800??, ¿qué pasa con una de 700X10??, ¿una de 20X600?... ... antes que programar y manejar código hay que planear bien lo que hay que hacer... quizá ya lo tengas pero temo que YO (hablo por mí) no entendí....

Saludos y hasta pronto
Solo como dato... igual estoy aquí por hoobie...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 03/11/2005 a las 03:26
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 15:33.